在ArrayList集合中元素之间的对比主要通过equals()方法进行判断:
主类:
/**
* 去除ArrayList中的相同元素
* */
package cn.itcast.arrylist_test.demo;
import java.util.ArrayList;
import java.util.Iterator;
import cn.itcast.arraylist.demo.Person;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList a1=new ArrayList();
// a1.add("abc1");
// a1.add("abc2");
// a1.add("abc3");
// a1.add("abc3");
// a1.add("abc4");
// a1.add("abc4");
a1.add(new Person(20, "haha20"));
a1.add(new Person(21, "haha21"));
a1.add(new Person(22, "haha22"));
a1.add(new Person(22, "haha22"));
a1.add(new Person(23, "haha23"));
a1.add(new Person(23, "haha23"));
System.out.println(a1);
a1=getsingleArrayList(a1);
System.out.println(a1);
}
public static ArrayList getsingleArrayList(ArrayList a1) {
ArrayList temp=new ArrayList();
for(Iterator it=a1.iterator();it.hasNext();)
{
Object o=it.next();
if(!temp.contains(o))
temp.add(o);
}
return temp;
}
}
自定义Person类:
package cn.itcast.arraylist.demo;
/**
* 描述人的类
* */
public class Person {
private int age;
private String name;
public Person(int age, String name) {
super();
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
@Override
public int hashCode() {
// System.out.println(this+"....hashcode");
return name.hashCode()+age;
}
@Override
public boolean equals(Object obj) {
// System.out.println(this+"....equals");
if(this==obj)
return true;
if(!(obj instanceof Person))
return false;
Person p=(Person) obj;
return this.name.equals(p.name)&&this.age==p.age;
}
@Override
public String toString() {
return name+":"+age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}