黑马程序员技术交流社区

标题: 谁帮我看一下,HashSet存储自定义元素出错了 [打印本页]

作者: zgjswp    时间: 2015-3-18 23:33
标题: 谁帮我看一下,HashSet存储自定义元素出错了
如有同名且年龄相同的视作是同一个人,搞了好久没找到错误。。。
代码如下:
  1. public class HashSetTest {
  2.     public static void main(String[] args) {
  3.         HashSet hs = new HashSet();
  4.         hs.add(new Student("lisi", 11));
  5.         hs.add(new Student("zhangsan", 12));
  6.         hs.add(new Student("qiansan", 16));
  7.         hs.add(new Student("zhaoliu", 13));
  8.         hs.add(new Student("zhaoliu", 13));
  9.         hs.add(new Student("qiansan", 16));
  10.         Iterator it = hs.iterator();
  11.         while (it.hasNext()) {
  12.             Student stu = (Student) it.next();
  13.             sop(stu.getName() + "..." + stu.getAge());
  14.         }
  15.     }
  16.     public static void sop(Object obj) {
  17.         System.out.println(obj);
  18.     }
  19. }

  20. class Student {
  21.     private String name;
  22.     private int age;
  23.     Student(String name, int age) {
  24.         this.name = name;
  25.         this.age = age;
  26.     }
  27.     public int hasCode() {
  28.         return name.hashCode() + age * 20;
  29.     }
  30.     public boolean equals(Object obj) {
  31.         if (!(obj instanceof Student))
  32.             return false;
  33.         Student stu = (Student)obj;
  34.         return this.name.equals(stu.name) && this.age == stu.age;
  35.     }
  36.     public String getName() {
  37.         return name;
  38.     }
  39.     public int getAge() {
  40.         return age;
  41.     }
  42.     public void setName(String name) {
  43.         this.name = name;
  44.     }
  45.     public void setAge(int age) {
  46.         this.age = age;
  47.     }
  48. }
复制代码








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