A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© renshu16 中级黑马   /  2014-5-15 23:30  /  1359 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 renshu16 于 2014-5-16 20:03 编辑
  1. /*
  2. 1.去除ArrayList集合中的重复元素

  3. 编译失败:
  4. ArrayListTest.java:35: 软件包 al 不存在
  5.                 Iterator it = new al.iterator();
  6.                                     ^
  7. 注意:ArrayListTest.java 使用了未经检查或不安全的操作。
  8. 注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
  9. 1 错误                                    
  10. */
  11. import java.util.*;

  12. class ArrayListTest{
  13.         
  14.         public static void sop(Object obj){
  15.                 System.out.println(obj);
  16.         }
  17.         
  18.         public static void main(String[] args){
  19.                 ArrayList al = new ArrayList();
  20.                 al.add("java01");
  21.                 al.add("java02");
  22.                 al.add("java02");
  23.                 al.add("java03");
  24.                 al.add("java03");
  25.                 sop(al);
  26.                
  27.                 al = singleElement(al);
  28.                 sop(al);
  29.         }
  30.         
  31.         //定义singleElement函数返回一个去除重复后的数组集合ArrayList
  32.         public static ArrayList singleElement(ArrayList al){
  33.                 ArrayList temp = new ArrayList();
  34.                 Iterator it = new al.iterator();        //编译失败?
  35.                
  36.                 while(it.hasNext()){
  37.                         Object obj = it.next();
  38.                         if(!temp.contains(obj))
  39.                                 temp.add(obj);
  40.                 }
  41.                
  42.                 return temp;
  43.         }
  44. }
复制代码
ArrayListTest.java:35: 软件包 al 不存在? 包也导入了,代码再一次核查了一遍,实在是不知道问题出在哪里?在线解答,谢谢~

评分

参与人数 1技术分 +1 收起 理由
911趣购 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
本帖最后由 911趣购 于 2014-5-15 23:48 编辑

Iterator it = new al.iterator();把这句改为Iterator it = al.iterator();即可-------------结果正确

你是要对数组进行迭代,而不是要用数组new出一个迭代器。
回复 使用道具 举报
911趣购 发表于 2014-5-15 23:46
Iterator it = new al.iterator();把这句改为Iterator it = al.iterator();即可-------------结果正确

你 ...

果然是粗心的小问题,感谢高手复查代码。

我擦,我真是瞎了,看了好几遍都没看出来

  1. Iterator it=a1.iterator();
  2.     while(it.hasNext())
  3.      {
  4.            it.next();

  5.      }
复制代码
回复 使用道具 举报
  1. /*
  2. 1.去除ArrayList集合中的重复元素

  3. 编译失败:
  4. ArrayListTest.java:35: 软件包 al 不存在
  5.                 Iterator it = new al.iterator();
  6. //我的回答:以下你肯定知道,因为这里没有添加泛型,在运行期时可能会出现
  7. //ClasscastException异常,因为任何数据放进去都是用Object类型表示   使用的时候可能因为没强制转型
  8. //编译器就是警号:不添加泛型 有可能会错误  等你学完泛型 你就是知道什么原因了!!
  9. 注意:ArrayListTest.java 使用了未经检查或不安全的操作。
  10. 注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
  11. 1 错误                                    
  12. */
  13. import java.util.*;

  14. public class ArrayListTest{
  15.         
  16.         public static void sop(Object obj){
  17.                 System.out.println(obj);
  18.         }
  19.         
  20.         public static void main(String[] args){
  21.                 ArrayList al = new ArrayList();
  22.                 al.add("java01");
  23.                 al.add("java02");
  24.                 al.add("java02");
  25.                 al.add("java03");
  26.                 al.add("java03");
  27.                 sop(al);
  28.                
  29.                 al = singleElement(al);
  30.                 sop(al);
  31.         }
  32.         
  33.         //定义singleElement函数返回一个去除重复后的数组集合ArrayList
  34.         public static ArrayList singleElement(ArrayList al){
  35.                 ArrayList temp = new ArrayList();
  36.                 Iterator it =new al.iterator();        //编译
  37.                                 //我的回答:上面这行代码不错误才怪  new  是用来创建对象的,你得到迭代器对象
  38.                                 //Iterator it=al.iterator();就是获得集合对应的迭代器对象   你为什么要new了?说说你的想法?
  39.                
  40.                 while(it.hasNext()){
  41.                         Object obj = it.next();
  42.                         if(!temp.contains(obj))
  43.                                 temp.add(obj);
  44.                 }
  45.                
  46.                 return temp;
  47.         }
  48. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
天涯追梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
的确是new用错了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马