我使用哈希码生成器作为 pojo 的实例变量。
public class Pojo {
private HashCodeBuilder hashBuilder = new HashCodeBuilder();
private int i;
public setI(int i) {this.i = i}
@Override
public int hashCode() {
hashBuilder.append(id);
return hashBuilder.toHashCode();
}
}
现在,如果我将 的值设置i
为相同的值两次,那么我的哈希码结果将会不同。这是实现中的错误吗?
我知道它正在发生,因为哈希码生成器保持运行总数。但它不应该为同一组值提供相同的哈希吗?
另外,如果我不遵循上述方法,那么我最终将在hashcode
我的 pojo 方法中初始化相同的哈希码生成器数千次,如下所示:
...
@Override
public int hashCode() {
hashBuilder = new HashBuilder();
hashBuilder.append(id);
return hashBuilder.toHashCode();
}
...
有没有办法重置这个运行总数,这样每次我hashcode
用相同的值调用我都会得到一致的答案?