package jihe;
//将Person类存入集合中,并删除相同元素
import java.util.ArrayList;
import java.util.Iterator;
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public String getName()
{
return this.name;
}
public int getAge()
{
return this.age;
}
public boolean equals(Object obj)//注意:对于参数对象,不能直接用contains,因为其默认是比较内存地址
{ //要先覆盖Object类的equals方法,改成自己需要的方法,供contains在底层自行调用
if(!(obj instanceof Person))//判断obj是否为Person类
return false;
Person p=(Person)obj;//强制转换为Person类
return this.name.equals(p.name)&&this.age==p.age;//返回比较规则(若name且age都一致则为同一目标)
}
}
class Add
{
public ArrayList test2()
{
ArrayList al=new ArrayList();
al.add(new Person("陈鸿",20));
al.add(new Person("钱鹏程",21));
al.add(new Person("张帅阳",22));
al.add(new Person("钱鹏程",21));
al.add(new Person("陈鸿",20));
return al;
}
}
class Choose
{
public ArrayList choose(ArrayList al)
{
ArrayList nal=new ArrayList();
Iterator it=al.iterator();
while(it.hasNext())
{
Person p=(Person)it.next();//此处要转换成Person类才能用它的比较方法
if(!nal.contains(p))//此处contains利用的是在类中覆盖的比较方法
nal.add(p);
}
return nal;
}
}
class Out
{
public void out(ArrayList nal)
{
Iterator it=nal.iterator();
while(it.hasNext())
{
Person p=(Person)it.next();
System.out.println(p.getName()+"..."+p.getAge());
}
}
}
public class ArrayListTest2 {
public static void main(String [] args)
{
Add a=new Add();
Choose c=new Choose();
Out o=new Out();
o.out(c.choose(a.test2()));//错误示例,应该增强代码可读性
}
}
(集合)ArrarListTest2
最新推荐文章于 2023-11-14 17:48:16 发布