• Java之hashSet实现引用类型的禁止重复功能


    题目:在HashSet集合中添加Person对象,把姓名相同的人当作同一个人,禁止重复添加。

    分析:1.定义一个Person类,定义name和age属性,并重写hashCode()和equals()方法,针对Person类的name属性进行比较。

    代码:

     1 import java.util.HashSet;
     2 import java.util.Iterator;
     3 import java.util.Set;
     4 
     5 public class Test70602 {
     6 
     7     public static void main(String[] args) {
     8         Person p1 = new Person("haha", 23);
     9         Person p2 = new Person("gege", 24);
    10         Person p3 = new Person("gege", 25);
    11         Set<Person> set = new HashSet<Person>();
    12         set.add(p1);
    13         set.add(p2);
    14         set.add(p3);
    15         System.out.println(set.size());
    16         Iterator<Person> iterator = set.iterator();
    17         while (iterator.hasNext()) {
    18             Person person = (Person) iterator.next();
    19             System.out.println(person.getName() + ":" + person.getAge());
    20         }
    21 
    22     }
    23 
    24 }
    25 
    26 class Person {
    27 
    28     private String name;
    29     private int age;
    30 
    31     public Person(String name, int age) {
    32         this.name = name;
    33         this.age = age;
    34     }
    35 
    36     public void setName(String name) {
    37         this.name = name;
    38     }
    39 
    40     public String getName() {
    41         return name;
    42     }
    43 
    44     public void setAge(int age) {
    45         this.age = age;
    46     }
    47 
    48     public int getAge() {
    49         return age;
    50     }
    51 
    52     // 实现hashCode()方法,返回待比较内容的hashCode。
    53     public int hashCode() {
    54         return name.hashCode();
    55     }
    56 
    57     // 实现equals()方法,返回一个布尔值。
    58     public boolean equals(Object obj) {
    59         if (this == obj) { // 判断是否是同一个对象,是的话,返回True
    60             return true;
    61         }
    62         if (!(obj instanceof Person)) { // 判断对象是否是Person类型,如果对象不是,返回false
    63             return false;
    64         }
    65 
    66         Person p = (Person) obj; // 将对象强转为Person类型
    67         boolean b = this.name.equals(p.name); // 判断name是否相同
    68         return b; // 返回判断结果
    69 
    70     }
    71 
    72 }

    最关键的就是hashCode()和equals()方法的实现。

  • 相关阅读:
    指针与数组实例练习(指针运算)
    C语言数组和函数实例练习(二)
    C语言数组和函数实例练习(一)
    近一个月的学习总结(4.8—5.12)
    Java网页小程序——Java Applet
    数据结构(二)线性表——链表
    JDBC的使用(MySQL数据库)
    Python变量类型及变量
    Shell编程语法
    文本处理三剑客
  • 原文地址:https://www.cnblogs.com/liyiran/p/4759478.html
Copyright © 2020-2023  润新知