我遇到了一个使用复杂 Map 的情况,它使用我定义的 Java 对象作为它的键,要做到这一点,这个对象的类需要实现接口(interface) Comparable 并覆盖 Object 的 hashcode 和 equals 方法,我想使用唯一 ID这个类的对象的hashcode,但是唯一的ID是Long类型,hashcode返回的值的类型是Integer,如果对象的ID增加到一个非常大的,这可能会导致数据损坏和不一致。
有什么方法可以将唯一的长类型 ID 转换为也可用于在对象之间进行识别的哈希码吗?
最佳答案
最简单的解决方案是依赖 java.lang.Long
的内置 hashCode()
:
@Override
public int hashCode() {
return Long.valueOf(getId()).hashCode();
}
编辑:
根据下面的评论,如果 id 存储为 java.lang.Long
而不是原始 long
,则更简单:
@Override
public int hashCode() {
return getId().hashCode();
}
关于java - 如何在我定义的 Java 对象中覆盖返回具有唯一实体 ID 的唯一哈希码值的哈希码方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25737641/