zoukankan      html  css  js  c++  java
  • 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()方法的实现。

  • 相关阅读:
    CF1454F Array Partition
    leetcode1883 准时抵达会议现场的最小跳过休息次数
    leetcode1871 跳跃游戏 VII
    leetcode1872 石子游戏VIII
    CF1355C Count Triangles
    CF1245D Shichikuji and Power Grid
    CF1368C Even Picture
    CF1368D AND, OR and square sum
    CF1395C Boboniu and Bit Operations
    SpringBoot和开发热部署
  • 原文地址:https://www.cnblogs.com/liyiran/p/4759478.html
Copyright © 2011-2022 走看看