gpt4 book ai didi

java - 当hashCode被覆盖时,Ignite如何执行cache.get()操作?

转载 作者:行者123 更新时间:2023-11-30 02:08:42 25 4
gpt4 key购买 nike

请参阅下面所附的图片。

Image.png

我已使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com