黑马程序员技术交流社区

标题: 没看懂这个程序,怎么没有去除重复元素 [打印本页]

作者: rzb2010    时间: 2015-7-7 17:35
标题: 没看懂这个程序,怎么没有去除重复元素
import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListTest{
       public static void main(String[] args){
            ArrayList al = new ArrayList();
            al.add( new Person("lisi1" ,21));
            al.add( new Person("lisi2" ,22));
            al.add( new Person("lisi3" ,23));
            al.add( new Person("lisi4" ,24));
            al.add( new Person("lisi3" ,23));
            al.add( new Person("lisi4" ,24));

            System.out.println(al);

            al = getSingleElement(al);

             //remove底层用的还是equals方法
            System.out.println(al.remove( new Person("lisi2" ,22)));
            System.out.println(al);
      }

       public static ArrayList getSingleElement(ArrayList al){
             //1、定义一个临时容器
            ArrayList temp = new ArrayList();

             //2、迭代al集合
            Iterator it = al.iterator();

             while(it.hasNext()){
                  Object obj = it.next();

                   //3、判断被迭代到的元素是否在临时容器存在
                   //contains方法依靠的是equals方法                  
                   if(!temp.contains(obj)){
                        temp.add(obj);
                  }
            }
             return temp;
      }
}

作者: 落雪    时间: 2015-7-7 19:24
Person类没有复写equals方法。而是采用Object中的equals方法。默认比较的对象的地址值。肯定去除不了重复的。你的注释里面就写明了contains运用的是equals方法。所以Person类要重写equals方法就行了。
作者: 357955778    时间: 2015-7-7 19:53
2楼正解!
作者: guoningyan    时间: 2015-7-7 21:46
二楼正解




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