请参阅下面的图像。
Image.png
我已经使用等号将密钥放入缓存中
方法如下:
@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列表的缓存
作为值,并使用Externalizable覆盖哈希码和等于]
最佳答案
默认情况下,Ignite将以二进制序列化形式在逐字段(包括字段排序)上比较键。hashCode
仅在您的类实现Externalizable
时使用。这会影响性能。
您还可以实现Binarylizable
并实现相应的方法以影响对象的存储和比较方式。