黑马程序员技术交流社区

标题: 关于集合的 [打印本页]

作者: 傲鸽    时间: 2013-6-28 10:07
标题: 关于集合的
  1. import java.util.ArrayList;
  2. import java.util.Iterator;

  3. public class Demo33{
  4.        
  5.         public static void main(String[] args){
  6.                
  7.                 ArrayList al=new ArrayList();
  8.                 al.add(new Person("张三",16));
  9.                 al.add(new Person("李四",17));
  10.                 al.add(new Person("张三",16));
  11.                 al.add(new Person("王五",26));
  12.                 al.add(new Person("张三",16));
  13.                 al.add(new Person("王五",26));
  14.                
  15.                 al=removeSameEmplement(al);
  16.                 System.out.println(al);
  17.         }
  18.        
  19.         public static ArrayList removeSameEmplement(ArrayList al){
  20.                 ArrayList temp=new ArrayList();
  21.        
  22.                 Iterator it = al.iterator();
  23.        
  24.                 while(it.hasNext())
  25.                         Object obj=it.next();
  26.                         if(!temp.contains(obj)){
  27.                                 temp.add(obj);
  28.                 }
  29.                 return temp;
  30.         }
  31. }
复制代码
编译出错,总提示
  1. Exception in thread "main" java.lang.Error: Unresolved compilation problem:

  2.         at cn.itcast0627.Demo33.main(Demo33.java:8)
复制代码
请大侠帮我找出错误
作者: liujkh123    时间: 2013-6-28 10:41
楼主 出错代码最好原封不动的贴出来,你这里只贴出了一部分,前面打包的部分
package cn.itcast0627; 也需要粘贴出来,这样在你贴出来的出错信息里边的出错行号才能对应到阵阵出错的那段代码。

好吧 你这代码出错还真是在包上面,你是不是在别的地方复制的一段代码到Eclipse里边,然后Eclipse里边还有一个cn.itcast0627的包,所以要加上
package cn.itcast0627; 就不会有楼主所说的错误了。

另外在楼主代码中
  1. public static ArrayList removeSameEmplement(ArrayList al){
  2.                 ArrayList temp=new ArrayList();
  3.         
  4.                 Iterator it = al.iterator();
  5.                
  6.                 while(it.hasNext())
  7.                        Object obj=it.next();//在while语句中,每次循环就会定义一个新的Object,这样会产生变量名冲突的,所以要将定义语句放到循环                    外边
  8.                         if(!temp.contains(obj)){
  9.                                 temp.add(obj);
  10.                 }
  11.                 return temp;
  12.         }
复制代码
这个方法也错了,应该改成这样
  1. public static ArrayList removeSameEmplement(ArrayList al){
  2.                 ArrayList temp=new ArrayList();
  3.         
  4.                 Iterator it = al.iterator();
  5.                
  6.                 Object obj = null;
  7.                 while(it.hasNext())
  8.                        obj=it.next();
  9.                         if(!temp.contains(obj)){
  10.                                 temp.add(obj);
  11.                 }
  12.                 return temp;
  13.         }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2