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

© 唐王潮 中级黑马   /  2014-9-30 15:28  /  1099 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码


为什么打印出来都是哈希码值,不是姓名+年龄?

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

3 个回复

倒序浏览
在Person类中重写toString()
回复 使用道具 举报
嘿~~ 发表于 2014-9-30 15:41
在Person类中重写toString()

感谢!!!
回复 使用道具 举报
楼主,你没复写toString()方法啊。Object类中的toString()方法就是打印:getClass().getName() + '@' + Integer.toHexString(hashCode())啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马