请参阅下面所附的图片。
我已使用 equals 将键放入缓存中 方法如下:
@Override
public boolean equals(Object obj) {
HierarchyMasterKey hierarchyMasterKey = (HierarchyMasterKey) obj;
return equalTo(this.hmCustNo, hierarchyMasterKey.hmCustNo) &&
equalTo(this.hmFromDate, hierarchyMasterKey.hmFromDate) &&
equalTo(this.hmParentCustNo, hierarchyMasterKey.hmParentCustNo) &&
equalTo(this.hmActNo, hierarchyMasterKey.hmActNo);
}
(equalTo 方法基本上是 null 安全等于检查。)
hashCode 计算如下:
@Override
public int hashCode() {
return Objects.hash(hmCustNo,hmActNo);
}
当我试图摆脱它时, equals 方法不会被执行。为什么会这样呢?点燃如何获得 不执行的键等于吗?
[我有一个缓存,其中有一个 HierarchyMasterKey 和一个 HierarchyMaster 列表 作为值并使用外部化来覆盖哈希码和等于]
最佳答案
默认情况下,Ignite 将以二进制序列化形式逐个字段地比较键(这包括字段排序)。
hashCode
仅当您的类实现 Externalized
时才会使用。这会对性能产生影响。
您还可以实现Binarylized
并实现相应的方法来影响对象的存储和比较方式。
关于java - 当hashCode被覆盖时,Ignite如何执行cache.get()操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50714462/