gpt4 book ai didi

java - 在 JAVA 中设置工作不正确

转载 作者:行者123 更新时间:2023-12-01 06:50:20 26 4
gpt4 key购买 nike

我只想从列表中删除重复的元素。为此,我编写了一个 POJO 类 Student 如下:

class Student{

private String roll;
private String name;

public Student(String roll, String name) {
this.roll = roll;
this.name = name;
}
@Override
public boolean equals(Object obj) {
Student st = (Student) obj;
return st.getRoll().equals(roll);
}

public String getRoll() {
return roll;
}
public void setRoll(String roll) {
this.roll = roll;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return roll ;
}

}

测试类如下:

public class TestMain {
public static void main(String[] args) {

List<Student> list = Arrays.asList(
new Student("19", "goutam kumar singh"),
new Student("20", "goutam kumar singh"),
new Student("11", "goutam kumar singh"),
new Student("19", "goutam kumar singh")
);

List<Student> arrayList = new CopyOnWriteArrayList<>(list);
Set<Student> set = new HashSet<>();

for(Student st : arrayList)
set.add(st);
System.out.println(set);
}
}

但在输出中,集合中的所有四个元素,但我期望只有三个元素,因为第四个元素是重复的,必须删除。

我哪里出错了?

最佳答案

您还必须重写 hashCode() 方法。覆盖那些您覆盖 equals() 方法的属性的 hashCode() 方法。

在使用Collection时,记住hashCode()equals()方法之间的约定很有用 -

1. If two objects are equal, then they must have the same hash code.
2. If two objects have the same hashcode, they may or may not be equal.

欲了解更多信息,您可以访问此link

关于java - 在 JAVA 中设置工作不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33609397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com