黑马程序员技术交流社区

标题: 这个问题急需解决 [打印本页]

作者: 唐王潮    时间: 2014-9-30 15:28
标题: 这个问题急需解决
  1. package domain;

  2. public class Person{
  3.         private String name;
  4.         private int age;
  5.        
  6.         public Person() {
  7.                 super();
  8.         }
  9.        
  10.         public Person(String name, int age) {
  11.                 super();
  12.                 this.name = name;
  13.                 this.age = age;
  14.         }

  15.         public String getName() {
  16.                 return name;
  17.         }
  18.         public void setName(String name) {
  19.                 this.name = name;
  20.         }
  21.         public int getAge() {
  22.                 return age;
  23.         }
  24.         public void setAge(int age) {
  25.                 this.age = age;
  26.         }
  27.         /**
  28.          * 必须Personl类自己的判断依据,复写Object
  29.          */
  30.         public boolean equals(Object obj){
  31.                 if(this==obj)
  32.                         return true;
  33.                 if(!(obj instanceof Person)){
  34.                         throw new ClassCastException("类型错误");
  35.                 }
  36.                 Person p = (Person)obj;
  37.                 return this.name.equals(p.name)&&this.age==p.age;
  38.                        
  39.         }
  40.        
  41.        
  42. }
复制代码

  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.util.List;

  4. import domain.Person;


  5. public class ArrayListDemo {
  6.        
  7.         public static void main(String[] args) {
  8. //                创建集合对象
  9.                 List list = new ArrayList();
  10. //                创建person对象
  11.                 Person p1 = new Person("lisi1",43);
  12.                 Person p2 = new Person("lisi2",42);
  13. //                把对象添加到集合
  14.                 list.add(p1);
  15.                 list.add(p2);
  16.                 list.add(new Person("lisi3", 23));
  17.                 list.add(new Person("lisi3", 23));
  18.                 list.add(new Person("lisi1", 43));
  19.                 list.add(new Person("lisi3", 23));
  20.                 list.add(new Person("lisi2", 42));
  21.                 list.add(new Person("lisi3", 23));
  22.                 /**
  23.                  * 取出对象
  24.                  */
  25. //                for (Iterator it = list.iterator(); it.hasNext();) {
  26. ////                        取出的是Object类,所以需要向下转型
  27. //                        Person p3 = (Person)it.next();
  28. //                        System.out.println(p3.getName()+"--"+p3.getAge());
  29. //                }
  30.                 System.out.println(list);
  31.                 singleElement2(list);
  32.                 System.out.println(list);
  33.                
  34.         }
  35.         /**
  36.          * 去掉重复元素
  37.          */
  38.         public static void singleElement2(List list) {
  39.                 List temp = new ArrayList();
  40.        
  41.                 for (Iterator it = list.iterator(); it.hasNext();) {
  42.                         Object obj = (Object)it.next();
  43.                         if(!temp.contains(obj))
  44.                                 temp.add(obj);
  45.                 }
  46.                
  47.                 list.clear();
  48.                 list.addAll(temp);
  49.                
  50.         }

  51. }
复制代码


为什么打印出来都是哈希码值,不是姓名+年龄?
作者: 嘿~~    时间: 2014-9-30 15:41
在Person类中重写toString()
作者: 唐王潮    时间: 2014-9-30 15:57
嘿~~ 发表于 2014-9-30 15:41
在Person类中重写toString()

感谢!!!
作者: 哈达洋    时间: 2014-9-30 21:13
楼主,你没复写toString()方法啊。Object类中的toString()方法就是打印:getClass().getName() + '@' + Integer.toHexString(hashCode())啊。




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