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

标签 java jakarta-ee ignite

请参阅下面所附的图片。

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/

相关文章:

java - 使用 sun.misc.Unsafe 获取 Java 数组项的地址?

jakarta-ee - 使用EJB计时器服务

multithreading - Spring DelegatingFilterProxy 多线程关注点

java - 需要帮助使用广度优先搜索 (Java) 进入邻接矩阵(图形)的第 n 级

java - 调用数组的方法来获取平均值

java - 在使用alternatives的Linux系统上,JAVA_HOME的正确路径是什么?

java - 非 Java EE 5 servlet 和 Java EE 5 servlet 容器之间有什么区别?

java - Apache Ignite Jdbc 连接用于单机上 2 个独立的数据网格

java - Apache Ignite 中的二进制编码器

cassandra - 使用 "with"时间戳通过 Ignite 写入 Cassandra,以消除对 Cassandra 的陈旧写入