A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付左军 中级黑马   /  2012-5-13 10:55  /  1491 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Person
  2. {
  3.         private String name;
  4.         private int age;
  5.         person(String name,int age)
  6.         {
  7.                 this.name=name;
  8.                 this.age=age;
  9.         }
  10.         public String getName()
  11.         {
  12.                 return this.name=name;
  13.         }
  14.         public int age()
  15.         {
  16.                 return this.age= age;
  17.         }
  18.         public boolean equals(Object obj)
  19.         {
  20.                 if(!(obj instanceof Person))
  21.                         return false;
  22.                 Person p=(Person)obj;
  23.                 return this.name.equals(p.name)&&this.age=p.age;//此处写Object.name可以吗?
  24.         }
  25. }

  26. class ArrayListTest2
  27. {
  28.         public static void main (String []args)
  29.         {
  30.                 ArrayList al=new ArrayList();
  31.                 al.add(new person("lisi,30"));
  32.                 al.add(new person("lisi1,30"));
  33.                 al.add(new person("lisi1,32"));
  34.                 al.add(new person("lisi2,33"));
  35.                 al.add(new person("lisi2,32"));
  36.        
  37.                 al=singleElement(al);//通过调用去除重复元素的方法,编译运行发现重复元素并未消失
  38.                 //原因,ArrayList并不知道自定义判断的条件,只判断对象是否相同
  39.                 //equals(),他使用对象的equals方法和另外的对象进行比较
  40.                 //因此该容器比较使用的是Person类中的equals方法,但person类中的equals是继承object类中的equals
  41.                 //方法,其比较的是地址值,因为都是new的对象,所以地址值不同,因此要在person类中对equals进行覆                //写

  42.                 Iterator it=new Iterator();
  43.                 while(it.hasNext())
  44.                 {
  45.                         //Object obj=it.next();由于add方法添加的是Object,但是Object中没有get方法,所以转型
  46.                         //Person p =(Person)obj;
  47.                         Person p= (Person)it.next();
  48.                         sop(p.getName()+"...."+p.getAge);                }
  49.                        
  50.         }
  51.         public static ArrayList singelElement(ArrayList al)
  52.         {
  53.                 //定义一个零时容器
  54.                 //遍历老容器
  55.                 //判断容器中是否有该元素
  56.                 ArrayList newAl=new ArratList();
  57.                 Iterator it=new Iterator();
  58.                 while(it.hasNext())
  59.                 {
  60.                         Object obj=it.next();
  61.                         if(!newAl.contains(obj))
  62.                         {
  63.                                 newAl.add(obj);
  64.                         }
  65.                 }
  66.                 return newAL;
  67.         }
  68. }
复制代码

1 个回复

倒序浏览
楼主并没有在集合中添加重复元素啊,我有点不明白楼主是什么意思?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马