首页 > 其他 > 详细

重写equals和hashCode

时间:2021-04-03 20:42:50      阅读:23      评论:0      收藏:0      [点我收藏+]

2021.04.03
第40次记录

**代码演示:**

```java
public class Student {
private String name;
public Student(){

}
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/* public boolean equals(Object obj){
if (obj == null || !(obj instanceof Student)) return false;
if (obj == this) return true;
Student s = (Student)obj;
return this.name.equals(s.name);
}*/
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return name.equals(student.name);
}
public int hashCode() {
return name.hashCode();
}
}
```

```java
//注意:equals和hashCode必须同时生成。不用自己写,直接IDEA生成即可。
public class HashMapTest02 {
public static void main(String[] args) {
Student s1 = new Student("zhangsan");
Student s2 = new Student("zhangsan");
/* //重写equals方法之前是false
System.out.println(s1.equals(s2));*/
//重写equals方法之后是true
System.out.println(s1.equals(s2));
//重写hashCode之后
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
Set<Student> students = new HashSet<Student>();
students.add(s1);
students.add(s2);
System.out.println(students.size());
}
}
```
输出结果:
true
-1432604556
-1432604556
1

重写equals和hashCode

原文:https://www.cnblogs.com/wzd19901129/p/14614283.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!