java HashSet添加自定义类问题

Hashset添加自定义类对象的时候,能实现当元素重复时,将该元素与hashset里的那个元素叠加吗。
比如Student类 里面有id grades(都是String类型)当id重复时 将第二个grades加到第一个grades后面

添加时,根据id进行判断,然后进行拼接并放入set中。

https://ask.csdn.net/questions/7684969?spm=1005.2025.3001.5141
这是你小号吗,问题,描述一模一样

重写自定义类的equals和hashcode方法,然后在equals方法中判断id一致时,将当前对象的grades和比较的对象的grades合并,返回true


import java.util.HashSet;

/**
 * 对象去重,需要重写 hashcode 和 equals 方法
 *
 * @Author: Negen
 * @Date: 2022/04/07/16:26
 * @Description:
 */
public class Demo {
    public static void main(String[] args) {
        Student zs = new Student("123", "90");
        Student ls = new Student("123", "89");
        Student w5 = new Student("456", "90");

        HashSet<Student> students = new HashSet<>();
        students.add(zs);
        students.add(ls);
        students.add(w5);

        System.out.println(students.size());
        students.forEach(student -> System.out.println(student.toString()));
    }
}

class Student{
    String id;
    String grade;

    Student(String id, String grade){
        this.id = id;
        this.grade = grade;
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Student))return false;
        Student stuObj = (Student) obj;
        return this.id.equals(stuObj.getId());
    }

    @Override
    public int hashCode() {
        return this.id.hashCode();
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getGrade() {
        return grade;
    }

    public void setGrade(String grade) {
        this.grade = grade;
    }

    @Override
    public String toString() {
        return String.format("[id=%s,grade=%s]", id, grade);
    }
}