gpt4 book ai didi

java - 使用 BigInteger 重写 public int hashCode()

转载 作者:搜寻专家 更新时间:2023-11-01 02:14:12 27 4
gpt4 key购买 nike

BigInteter 太大而无法转换为整数。但是我必须将具有 id (SHA 512) 的对象存储在 HashMap 中,并且需要一个没有很多冲突的哈希函数。

我试过了。但是,我不确定某处是否没有聚类。

@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Advertisement other = (Advertisement) obj;
return this.getId().equals(other.getId());
}

@Override
public int hashCode() {
return new BigInteger(getId(), 16).hashCode();
}

转换为整数 (bi.intValue()) 会更有效吗?

最佳答案

不要试图重新发明轮子 - 只需使用 getId().hashCode():

@Override
public int hashCode() {
return getId().hashCode();
}


String.hashCode()使用高效、高质量的哈希算法,因此是最佳选择。它使您的代码更简单,这总是一件好事。

关于java - 使用 BigInteger 重写 public int hashCode(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10289659/

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