list集合判断元素的是否相同依据的是元素的equals方法;Remove也是equals,如果对象的类没有重写的Object的equals 方法就是比较对象是否同一个如果你建了一个新的对象肯定不同,要实现判断数据相同认为是一个对象需要重写Object 的equals方法
class ListDemo
{
public static void sop(Object obj){
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al1=new ArrayList();
al1.add(new Person("lisi",30));
al1.add(new Person("lis3",30));
al1=singleList(al1);
for(Iterator it =al1.iterator();it.hasNext();){
Person p=(Person)it.next();
sop(p.getName()+" "+p.getAge());
}
}
public static ArrayList singleList(ArrayList al){//去掉相同元素的方法,
//Iterator it=al.iterator();
ArrayList newAl=new ArrayList();
for(Iterator it=al.iterator();it.hasNext();){
Object obj=it.next();
//sop(obj);
if(!newAl.contains(obj)){
newAl.add(obj);
}
}
return newAl;
}
}
class Person
{
private String name;
private int age;
Person(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public boolean equals(Object o){
if(!(o instanceof Person))
throw new RuntimeException("leixing bufu");
System.out.println(this。name);//打印调用者的名字
Person p=(Person)o;
return name.equals(p.getName())&&age==p.getAge();
}
}
|
|