- class Person
- {
- private String name;
- private int age;
- person(String name,int age)
- {
- this.name=name;
- this.age=age;
- }
- public String getName()
- {
- return this.name=name;
- }
- public int age()
- {
- return this.age= age;
- }
- public boolean equals(Object obj)
- {
- if(!(obj instanceof Person))
- return false;
- Person p=(Person)obj;
- return this.name.equals(p.name)&&this.age=p.age;//此处写Object.name可以吗?
- }
- }
- class ArrayListTest2
- {
- public static void main (String []args)
- {
- ArrayList al=new ArrayList();
- al.add(new person("lisi,30"));
- al.add(new person("lisi1,30"));
- al.add(new person("lisi1,32"));
- al.add(new person("lisi2,33"));
- al.add(new person("lisi2,32"));
-
- al=singleElement(al);//通过调用去除重复元素的方法,编译运行发现重复元素并未消失
- //原因,ArrayList并不知道自定义判断的条件,只判断对象是否相同
- //equals(),他使用对象的equals方法和另外的对象进行比较
- //因此该容器比较使用的是Person类中的equals方法,但person类中的equals是继承object类中的equals
- //方法,其比较的是地址值,因为都是new的对象,所以地址值不同,因此要在person类中对equals进行覆 //写
- Iterator it=new Iterator();
- while(it.hasNext())
- {
- //Object obj=it.next();由于add方法添加的是Object,但是Object中没有get方法,所以转型
- //Person p =(Person)obj;
- Person p= (Person)it.next();
- sop(p.getName()+"...."+p.getAge); }
-
- }
- public static ArrayList singelElement(ArrayList al)
- {
- //定义一个零时容器
- //遍历老容器
- //判断容器中是否有该元素
- ArrayList newAl=new ArratList();
- Iterator it=new Iterator();
- while(it.hasNext())
- {
- Object obj=it.next();
- if(!newAl.contains(obj))
- {
- newAl.add(obj);
- }
- }
- return newAL;
- }
- }
复制代码 |
|