好友
阅读权限10
听众
最后登录1970-1-1
|
重写hashcode后, 通过控制台看到s1,s2的哈希值相同,为什么equals比较返回结果为false呢
public class SetDemo3 { public static void main(String[] args) {
// Set集合去重复原因:先判断哈希值,再判断equals
Set<Student> sets = new HashSet<>();
Student s1 = new Student("无恙",20,'男');
Student s2 = new Student("无恙",20,'男');
Student s3 = new Student("周雄",21,'男');
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
System.out.println(s3.hashCode());
System.out.println(Objects.equals(s1, s2)); // 更安全,内部还是 s1.equals(s2);
System.out.println(s1.equals(s2));
System.out.println(s1 == s2);
System.out.println(s1);
System.out.println(s2);
sets.add(s1);
sets.add(s2);
sets.add(s3);
System.out.println(sets);
}
}
=================================================只重写了hashcode===================================================================== /**
只要两个对象内容一样,结果一定是true
* @Param o
* @return
*/
// @Override
// public boolean equals(Object o) {
// if (this == o) return true;
// if (o == null || getClass() != o.getClass()) return false;
// Student student = (Student) o;
// return age == student.age && sex == student.sex && Objects.equals(name, student.name);
// }
/**
*/
@Override
public int hashCode() {
return Objects.hash(name, age,sex);
} |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|