这两天学习list集合,其中ArrayList和LinkedList中的contains方法都用到了对象的equals方法,equals方法的确是一个神器呀,完全可以按照自己的方式,比较任何对象。上一个自己写的删除ArrayList中的重复元素。虽然和老师的差不多,呵呵。- import java.util.*;
- /*
- 去除自定义对象的重复元素,如人的姓名,年龄相等则视为同一元素。
- */
- class ArrayListTest2
- {
- public static void main(String[] args)
- {
- ArrayList al=new ArrayList();// 建立一个ArrayList容器
- Person p1=new Person("Jack",20);
- Person p2=new Person("Jim",20);
- Person p3=new Person("Jimmy",21);
- Person p4=new Person("Jack",20);
- Person p5=new Person("Jack",20);
- //向容器中添加元素
- al.add(p1);
- al.add(p2);
- al.add(p3);
- al.add(p4);
- al.add(p5);
- //创建一个迭代器
- Iterator it=al.iterator();
- while(it.hasNext())
- {
- print((Person)it.next()); //打印al中的元素,自己定义的print方法
- }
- System.out.println("===============");
- al=uniqueEle(al);
- it=al.iterator();
- while(it.hasNext())
- {
- print((Person)it.next());
- }
- }
- public static ArrayList uniqueEle(ArrayList al)//去除重复元素
- {
- ArrayList list=new ArrayList(); //新建一个容器用于存放去除重复后的对象
- Iterator it=al.iterator();
- while(it.hasNext())
- {
- //Person p=(Person)it.next();
- Object obj=it.next();
- if(!list.contains(obj))
- {
- list.add(obj);
- }
- }
- return list;
- }
- public static void print(Person p)// 打印Person信息
- {
- System.out.println(p.getName()+"-----"+p.getAge());
- }
- }
- 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 obj)//经典之处,重写equals方法
- {
- if(!(obj instanceof Person))
- {
- return false;
- }
- Person p=(Person)obj;
- return this.name.equals(p.name) && this.age==p.age;
- }
- }
复制代码 |