黑马程序员技术交流社区

标题: List集合感想 [打印本页]

作者: zcbyzcb    时间: 2013-6-12 20:46
标题: List集合感想
这两天学习list集合,其中ArrayList和LinkedList中的contains方法都用到了对象的equals方法,equals方法的确是一个神器呀,完全可以按照自己的方式,比较任何对象。上一个自己写的删除ArrayList中的重复元素。虽然和老师的差不多,呵呵。
  1. import java.util.*;
  2. /*
  3. 去除自定义对象的重复元素,如人的姓名,年龄相等则视为同一元素。
  4. */
  5. class ArrayListTest2
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 ArrayList al=new ArrayList();// 建立一个ArrayList容器
  10.                 Person p1=new Person("Jack",20);
  11.                 Person p2=new Person("Jim",20);
  12.                 Person p3=new Person("Jimmy",21);
  13.                 Person p4=new Person("Jack",20);
  14.                 Person p5=new Person("Jack",20);
  15.                 //向容器中添加元素
  16.                 al.add(p1);
  17.                 al.add(p2);
  18.                 al.add(p3);
  19.                 al.add(p4);
  20.                 al.add(p5);
  21.                 //创建一个迭代器
  22.                 Iterator it=al.iterator();
  23.                 while(it.hasNext())
  24.                 {
  25.                         print((Person)it.next()); //打印al中的元素,自己定义的print方法
  26.                 }
  27.                 System.out.println("===============");
  28.                 al=uniqueEle(al);
  29.                 it=al.iterator();
  30.                 while(it.hasNext())
  31.                 {
  32.                         print((Person)it.next());
  33.                 }
  34.         }
  35.         public static ArrayList uniqueEle(ArrayList al)//去除重复元素
  36.         {
  37.                 ArrayList list=new ArrayList(); //新建一个容器用于存放去除重复后的对象
  38.                 Iterator it=al.iterator();
  39.                 while(it.hasNext())
  40.                 {
  41.                         //Person p=(Person)it.next();
  42.                         Object obj=it.next();
  43.                         if(!list.contains(obj))
  44.                         {
  45.                                 list.add(obj);
  46.                         }
  47.                 }
  48.                 return list;
  49.         }
  50.         public static void print(Person p)// 打印Person信息
  51.         {
  52.                 System.out.println(p.getName()+"-----"+p.getAge());
  53.         }
  54. }

  55. class Person
  56. {
  57.         private String name;
  58.         private int age;
  59.         Person(String name, int age)
  60.         {
  61.                 this.name=name;
  62.                 this.age=age;
  63.         }
  64.         public String getName()
  65.         {
  66.                 return name;
  67.         }
  68.         public int getAge()
  69.         {
  70.                 return age;
  71.         }
  72.         public boolean equals(Object obj)//经典之处,重写equals方法
  73.         {
  74.                 if(!(obj instanceof Person))
  75.                 {
  76.                         return false;
  77.                 }
  78.                 Person p=(Person)obj;
  79.                 return this.name.equals(p.name) && this.age==p.age;
  80.         }
  81. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2