如何删除具有相同状态的对象。
class Student{
private int age;
private String name;
Student(int age, String name){
this.age=age;
this.name=name;
} }
public class SetTest {
public static void main(String[] args) {
Student s1= new Student(15,"abc");
Student s2= new Student(15,"abc");
Student s3= new Student(16,"adfc");
Student s4= new Student(14,"ayuc");
Set<Student> ss= new HashSet<Student>();
ss.add(s1); ss.add(s2); ss.add(s3); ss.add(s4);}}
这里 s1和s2 具有相同的状态,因为我正在使用Set,我想只保留一个实例。我该怎么办才能只使用不相等的实例。
答案 0 :(得分:3)
您需要覆盖Student类中的equals()和hashCode()方法。在这种方法中,您可以定义两个学生平等的意义。
@Override
public boolean equals(Object other){
//code to determine if this student is equal to other
}
@Override
public int hashCode() {
//code to generate a hashCode for the student
}
请注意此question中的建议。
答案 1 :(得分:1)
您需要覆盖equals()
课程中的hashCode()
和Student
方法。
class Student {
...
@Override
public boolean equals(Object obj) {
// Your own logic
// return super.equals(obj); // default
}
@Override
public int hashCode() {
// Your own logic
// return super.hashCode(); // default
}
}