hashcode 方法也重写一下
时间: 2024-01-28 12:02:59 浏览: 81
复写hashCode()方法,和equasl()方法
在Java中,如果重写了equals方法,那么也应该重写hashCode方法,以保证对象在放入集合中时能够正确地被识别和取出。hashCode方法用于计算一个对象的哈希值,哈希值是一个整数,用于快速查找对象。如果两个对象相等,那么它们的hashCode值也应该相等。
下面是重写hashCode方法的代码:
```
public class Book {
private String no;
private String name;
private float price;
@Override
public boolean equals(Object obj) {
// ...
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((no == null) ? 0 : no.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + Float.floatToIntBits(price);
return result;
}
}
```
在重写hashCode方法时,需要注意以下几点:
1. hashCode方法返回一个int类型的值。
2. hashCode方法应该根据对象的属性值计算哈希值。
3. 计算哈希值的过程应该尽量简单和高效。
4. 计算哈希值时可以使用一个常量乘以一个属性的hashCode值,然后将结果加到一个初始值上,最后返回结果。常量和初始值可以自己定义,但是建议使用质数。
5. 如果对象的equals方法被重写,那么hashCode方法也应该被重写,以保证对象在放入集合中时能够正确地被识别和取出。
阅读全文