请参阅下面的图像。

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并实现相应的方法以影响对象的存储和比较方式。

07-24 09:15