Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在HashSet中只维护非相等对象_Java - Fatal编程技术网

Java 如何在HashSet中只维护非相等对象

Java 如何在HashSet中只维护非相等对象,java,Java,如何删除具有相同状态的对象 class Student{ private int age; private String name; Student(int age, String name){ this.age=age; this.name=name; } }

如何删除具有相同状态的对象

          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);}}
班级学生{
私人互联网;
私有字符串名称;
学生(整数年龄,字符串名称){
这个。年龄=年龄;
this.name=name;
} }
公共类设置测试{
公共静态void main(字符串[]args){
学生s1=新生(15,“abc”);
学生s2=新生(15,“abc”);
学生s3=新生(16,“adfc”);
学生s4=新生(14,“ayuc”);
Set ss=新的HashSet();
ss.add(s1);ss.add(s2);ss.add(s3);ss.add(s4);}

在这里,s1和s2具有相同的状态,当我使用Set时,我只想保留一个实例。我应该怎么做才能只取实例不相等的对象

您需要重写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
    }

注意这里的建议。

您需要重写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
    }

注意这里的建议。

您需要覆盖
学生
类中的
equals()
hashCode()
方法

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
    }
}

您需要重写
Student
类中的
equals()
hashCode()
方法

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
    }
}
实现
equals()
hashCode()
方法。实现
equals()
hashCode()
方法。更改为upvote,“此问题中的建议”位是关键的。更改为upvote,“此问题中的建议”位是关键的。