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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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;
      }
}

3 个回复

倒序浏览
Person类没有复写equals方法。而是采用Object中的equals方法。默认比较的对象的地址值。肯定去除不了重复的。你的注释里面就写明了contains运用的是equals方法。所以Person类要重写equals方法就行了。
回复 使用道具 举报
2楼正解!
回复 使用道具 举报
二楼正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马