package collection.list;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* List集合判断元素是否相同,依据元素的
equals()方法,
* contains(),remove()等等都是依据
equals()方法进行操作的
* @author wjw
*
*/
public class ArrayList_qu_duixiang {
public static void main(String[]
args) {
List list=new ArrayList
();
Person p1=new Person();
p1.setAge(33);
p1.setName("a");
Person p2=new Person();
p2.setAge(35);
p2.setName("b");
Person p3=new Person();
p3.setAge(31);
p3.setName("c");
Person p4=new Person();
p4.setAge(23);
p4.setName("d");
list.add(p1);//存放自定
义的对象
list.add(p2);//存放自定
义的对象
list.add(p2);//存放自定
义的对象
list.add(p3);//存放自定
义的对象
list.add(p4);//存放自定
义的对象
System.out.println("这里
remove()方法调用的就是equals()方法进行比
对移除,这里指向同一对象,可以移除,但若
用匿名对象的话就不行了:"+list.remove
(p3));
//list=quChong(list);//
去重,比对对象,list底层自动调用equals()
方法进行比对,但我重写了该方法
Iterator
iter=list.iterator();
while(iter.hasNext()){
Object
obj=iter.next();//Iterator返回的是Object
类型
Person p=
(Person)obj;//要向下转型才行
System.out.println(p.getName()
+",,,,"+p.getAge());
}
System.out.println("---
------------------------------------");
// List a=new ArrayList();
// a.add("a");
// a.add("a");
// a.add("b");
// a.add("c");
// a.add("c");
// System.out.println("去重
前:"+a);
// a=quChong(a);
// System.out.println("去重
后:"+a);
}
public static List quChong(List
list){
List newlist=new
ArrayList();//new一个新的ArrayList,用来
存储不是重复的元素
Iterator
iter=list.iterator();
while(iter.hasNext()){
Object
obj=iter.next();
//注意,下面调用
contains()方法,其实contains()方法就是调
用了equals()方法,被我重写了规则啊
if(!
newlist.contains(obj)){//判断如果不包含
,就添加到新的list中
newlist.add(obj);
}
}
return newlist;
}
}
class Person{
private String name;
private int age;
//不重写,equals()方法比较的是对
象的地址
//重写本类父类Object中equals()方
法,比较的是对象中name和age的值是否相同
public boolean equals(Object
obj){
if(!(obj instanceof
Person)){
return false;
}
Person p=(Person)obj;
System.out.println
(this.name+"....."+p.getName());
return this.name.equals
(p.getName()) && this.age==p.getAge();
}
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;
}
}