/**让ArralList集合具备判重功能。
将自定义对象作为元素,存储到ArrayList集合中,并去除相同元素。
同姓名和同年龄视为同一个人。为重复元素。
思路:三大块
1,对人进行描述,姓名,年龄,将数据封装到人对象中
2,自定义容器将人存入
3,从集合中取出
*/
import java.util.*;
class ArrayListDemo
{
public static void main(String[] args)
{
//创建对象,添加元素。将Person的实例对象作为参数传递给add
ArrayList<Person> al=new ArrayList<Person>();
al.add(new Person("lisi01",30));
al.add(new Person("lisi02",20));
al.add(new Person("lisi03",18));
al.add(new Person("lisi04",42));
al.add(new Person("lisi03",18));
al=singleElement(al);
//迭代ArrayList集合,元素为Person对象
Iterator<Person> it=al.iterator();
while (it.hasNext())
{
Person p=(Person)it.next();//强转
System.out.println(p.getName()+":"+p.getAge());
}
}
//定义一个临时比较器。
public static ArrayList singleElement(ArrayList al){
ArrayList newAl=new ArrayList();
Iterator it=al.iterator();
while (it.hasNext())
{
Object obj=it.next();
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 boolean equals(Object obj){
if (!(obj instanceof Person))
return false;
//throw new ClassCastException("不是同类型,不能比较。");
Person p=(Person)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
public void setName(String name)
{
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
让ArralList集合具备判重功能。去除重复元素
最新推荐文章于 2024-05-16 11:26:58 发布