| 
 
| 对于List集合去重的问题,通过学习与测试,总结出以下几点 1.在进行删除重复元素时,如果删除的是一个对象,则必须重写equals方法,并且对
 要删除的元素与Object类进行比较,如果是Object子类实例则必须将Object强制转换成新创建的类
 2.在与此同时,必须定义一个新的集合容器,用来放与原来集合不相同的元素,然后返回这个新集合
 3.值得注意,前两条是List集合去重都必须操作的。以前一直以为只有ArrayList集合才是这样处理,但经过试验后Vector、LinkedList集合去重用同样的方法处理。
 以下是具体的代码实现:
 
 复制代码package com.cg.test;
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListDemo {
        public static void main(String[] args) {
                ArrayList arrayList=new ArrayList();
                arrayList=showArrayList(arrayList);
                ArrayList arrayList1=shownewArrayList(arrayList);
                Iterator it=arrayList1.iterator();
                while(it.hasNext()){
                        Person1 person=(Person1)it.next();
                        System.out.println(person.name+"::"+person.age);
                }
        }
        private static ArrayList showArrayList(ArrayList arrayList) {
                arrayList=new ArrayList();
                arrayList.add(new Person1("张三",20));
                arrayList.add(new Person1("李四",22));
                arrayList.add(new Person1("王五",23));
                arrayList.add(new Person1("赵六",24));
                arrayList.add(new Person1("赵六",24));
                return arrayList;
        }
        public static ArrayList shownewArrayList(ArrayList arrayList){
                ArrayList newArrayList=new ArrayList();
                Iterator iterator=arrayList.iterator();
                while(iterator.hasNext()){
                        Object object=iterator.next();
                        if(!newArrayList.contains(object)){
                                newArrayList.add(object);                                
                        }                
                }
                return newArrayList;
        }
}
class Person1{
        public String name;
        public int age;
        Person1(String name,int age){
                this.name=name;
                this.age=age;
        }
        /*public int hashCode(){
                return name.hashCode()+age*27;
        }*/
        public boolean equals(Object object){
                if(!(object instanceof Person1))
                        return false;
                Person1 person=(Person1)object;
                return this.name.equals(person.name)&&this.age==person.age;
        }
}
 | 
 |