JAVA equals方法重写时要重写hashCode方法
程序员文章站
2022-05-20 12:20:55
...
package test; import java.util.HashSet; import java.util.Set; /** * @author qxch0372@163.com */ public class Test1 { public static void main(String[] args) { Set<Student> set = new HashSet<Student>(); Student s1 = new Student("ZhangSan", 13); Student s2 = new Student("ZhangSan", 13); System.out.println(s1.hashCode()); System.out.println(s2.hashCode()); set.add(s1); set.add(s2); System.out.println(set); System.out.println(s1.equals(s2)); } } class Student { private String name; private Integer age; public Student(String name, Integer age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String toString() { return name + "'s age is " + String.valueOf(age); } public boolean equals(Object other) { if(this == other) return true; if(other == null) return false; if(!(other instanceof Student)) return false; final Student stu = (Student)other; if(!getName().equals(stu.getName())) return false; if(!getAge().equals(stu.getAge())) return false; return true; } public int hashCode() { int result = getName().hashCode(); result = 29*result + getAge().hashCode(); return result; } }
在重写equals方法的时候一定要重写hashCode()方法
上一篇: 112. 路径总和,113. 路径总和 II,437. 路径总和 III
下一篇: 重写equal
推荐阅读
-
详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝)
-
Java连载57-equals重写、finalize方法、hashCode方法
-
【java基础】为什么重写toString()方法?
-
Java方法重写注意事项,附带继承,子类与父类相关内容
-
Java基础之方法重写和多态示例
-
Java--equals和 == 的比较和equals()、HashCode()的重写
-
荐 java父类-Object类-equals与==-方法的重载和重写-游离块-this关键字
-
第十一天-Java继承/多态特性-方法重写/抽象类/适配器/对象运行时的多态/
-
Java中的方法重载、重写、隐藏
-
java中重写equals()方法的时候为什么要重写hashCode()方法?