/**
遍历人员档案,去除重复人员(同姓名同年龄)
*/
- import java.util.*;
- class Person
- //定义人员类
- {
- private String name;
- private int age;
- Person(String name,int age)
- {
- this.name=name;
- this.age=age;
- }
- public boolean equals(Object obj)
- /*
- 重写equals方法,比较两个人对象的姓名和年龄判断是否同一人
- 注意:
- 在List集合中,contains和remove方法的低层都是equals方法
- 所以,重写了equals方法后,contains和remove方法也会改变
- 例如此时,contains方法就是查询集合中是否有指定对象同姓名年龄的对象
- */
- {
- if (!(obj instanceof Person) )
- {
- return false;
- }
- //instanceof是判断obj是否是Person的实例
- //换句话说,判断obj是否可以转型为Person
- Person p=(Person) obj;
- return this.name.equals(p.name)&&this.age==p.age;
- }
- public void sopPerson()
- {
- Person.sop("name:"+name+" ,age:"+age);
- }
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }
- class Out
- {
- private ArrayList per;
- ArrayList per_n=new ArrayList();
- Out()
- //构造函数录入原名单
- {
- per=new ArrayList();
- per.add(new Person("jia",18));
- per.add(new Person("yi",18));
- per.add(new Person("jia",23));
- per.add(new Person("jia",18));
- per.add(new Person("bin",18));
- per.add(new Person("yi",18));
- per.add(new Person("bin",18));
- per.add(new Person("jia",20));
- show(per);
- }
- public void outPerson()
- //去除相同人员的方法
- {
- Iterator it=per.iterator();
- //跌送提取集合对象
- while (it.hasNext())
- {
- Person p=(Person) it.next();
- //next返回的是Object对象
- //要使用Person中方法,需要向下转型
- if (!per_n.contains(p))
- //equals方法已经重写,contains也有了新的功能
- {
- per_n.add(p);
- }
- }
- Person.sop("-------------------------------");
- show(per_n);
- }
- public void show(ArrayList per)
- //遍历集合对象方法
- {
- Iterator it=per.iterator();
- while (it.hasNext())
- {
- Person p=(Person)it.next();
- p.sopPerson();
- }
- }
- }
- class ArrayListDemo
- {
- public static void main(String[] args)
- {
- new Out().outPerson();
- }
- }
复制代码
|
|