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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如有同名且年龄相同的视作是同一个人,搞了好久没找到错误。。。
代码如下:
  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. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马