黑马程序员技术交流社区

标题: ArrayList去重复对象的的问题,求大神助解!!!! [打印本页]

作者: 18353666072    时间: 2014-6-20 19:58
标题: ArrayList去重复对象的的问题,求大神助解!!!!
本帖最后由 18353666072 于 2014-6-20 20:09 编辑
  1. import java.util.*;
  2. class person
  3. {
  4.         private String name;
  5.         private int age;
  6.         person(String name,int age)
  7.         {
  8.                 this.name = name;
  9.                 this.age = age;
  10.         }
  11.         public boolean equals(Object obj)
  12.         {
  13.                 if(!(obj instanceof person))
  14.                         return false;
  15.                 person p = (person)obj;
  16.                 return this.name.equals(p.name) && this.age == p.age;
  17.         }
  18.         public String getName()
  19.         {
  20.                 return name;
  21.         }
  22.         public int getAge()
  23.         {
  24.                 return age;
  25.         }
  26. }
  27. class ArrayListEx
  28. {
  29.         public static void main(String[] args)
  30.         {
  31.                 ArrayList al = new ArrayList();
  32.                 al.add(new person("lisi01",30));
  33.                 al.add(new person("lisi02",32));
  34.                 al.add(new person("lisi02",32));
  35.                 al.add(new person("lisi03",33));
  36.                 al.add(new person("lisi04",35));
  37.                 al.add(new person("lisi05",38));
  38.                 al.add(new person("lisi05",38));
  39.                
  40.                 al=singleElement(al);
  41.                 Iterator it = al.iterator();
  42.                 while(it.hasNext())
  43.                 {
  44.                         /*Object obj = it.next();
  45.                           person p = (person)obj;
  46.                         */
  47.                         person p = (person)it.next();
  48.                         sop(p.getName()+"---"+p.getAge());
  49.                 }
  50.                
  51.         }
  52.         public static ArrayList singleElement(ArrayList al)
  53.         {
  54.                 //定义一个容器
  55.                 ArrayList newAl = new ArrayList();
  56.                 Iterator it = al.iterator();
  57.                 while(it.hasNext())
  58.                 {
  59.                         Object obj= it.next();
  60.                         if(!newAl.contains(obj))
  61.                         {
  62.                                 newAl.add(obj);
  63.                         }
  64.                 }
  65.                 return newAl;
  66.         }
  67.         public static void sop(Object obj)
  68.         {
  69.                 System.out.println(obj);
  70.         }
  71. }
复制代码

1  : return this.name.equals(p.name) && this.age == p.age;这句话怎么理解
2  :this.name是new person();的么
3  :p.name是equals的么,4  :return this.name.equals(p.name) && this.age == p.age 为什么name的比较用的是equals(他们是对象比较么,对象比较都用equals么,),而age比较用的是== (这里是不叫的值对吧)。。。。




作者: yesecongcong    时间: 2014-6-21 00:39
int  类型不是类,没有equal方法,可以转化成Integer类然后用equal方法,但那不是麻烦嘛




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