ArrayList去除重复对象

import java.util.ArrayList;
import java.util.ListIterator;

class Student{
    String name;
    int age;
    public Student(    String name , int age){
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        
        if(obj == null)
            return false;
        if(this == obj)
            return true;
        Student student = null;
        if (obj instanceof Student)
            student = (Student)obj;
        if(this.name.equals(student.name)  && this.age == student.age)
            return true;
        return false;
    }
    

    @Override
    public String toString(){
        return "("+this.name+","+this.age+")";
    }
}



public class RemoveObject {
    
    static ArrayList getSingle(ArrayList list) {
        
        //创建一个新集合,循环传递进来的集合进行比较,有重复不添加
        ArrayList arrayList = new ArrayList();
        
        ListIterator it = list.listIterator();
        
        while (it.hasNext()) {
            Object obj = it.next();
            if (! (arrayList.contains(obj))  ) {
                arrayList.add(obj);
            }    
        }
        return arrayList;
    }
    
    @SuppressWarnings("rawtypes")
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        
        list.add(new Student("凿壁借光——匡衡", 10));
        list.add(new Student("凿壁借光——匡衡", 10));
        list.add(new Student("萤囊映雪——车胤", 11));

        System.out.println(list);//[(凿壁借光——匡衡,10), (凿壁借光——匡衡,10), (萤囊映雪——车胤,11)]
        
        ArrayList arrayList = getSingle(list);
        
        System.out.println(arrayList);//[(凿壁借光——匡衡,10), (萤囊映雪——车胤,11)]
        
    }
}

 

核心:重写equalse()方法!

posted @ 2018-05-12 17:26  马鞍山  阅读(510)  评论(0编辑  收藏  举报