去除ArrayList重復的對象
將自定義對象作為元素存到ArrayList集合中,並去除重復元素;
比如:存人對象,同姓名,同年齡,視為同一個人。為重復元素。
class Person{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
Person(String name,int age){
this.name=name;
this.age=age;
}
public boolean equals(Object obj){ //因為所有類都繼承或間接繼承了Object類,在Person類中重寫了Object類中的equals方法。告訴它該如何進行是否重復的判斷。
if(!(obj instanceof Person)){
return false;
}
Person p=(Person)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
}
public class Quchuchongfa {
public static void main(String[] args) {
ArrayList a=new ArrayList();
a.add(new Person("mingzi01",10));
a.add(new Person("mingzi02",11));
a.add(new Person("mingzi02",11));
a.add(new Person("mingzi03",12));
a.add(new Person("mingzi03",12));
a.add(new Person("mingzi04",13));
a=fangfa(a); //接收進行判斷後的ArrayList。
for(Iterator b=a.iterator();b.hasNext();){
Person y=(Person) b.next();
System.out.pringtln(y.getName()+y.getAge());
}
}
public static ArrayList fangfa(ArrayList a){ //寫判斷是否重復的內部靜態方法。
ArrayList b=new ArrayList();
for(Iterator t=a.iterator();t.hasNext();){
Object c=t.next();
if(!(b.contains(c))){b.add(c);} //此處contains調用了被重寫的equals方法。
}
return b; //返回進行判斷後的ArrayList。
}
去除ArrayList重復的對象