Java 使用BigInteger重写公共int hashCode()

Java 使用BigInteger重写公共int hashCode(),java,collections,hashcode,Java,Collections,Hashcode,biginter太大,无法转换为整数。但是我必须将id为(SHA 512)的对象存储在HashMap中,并且需要一个没有很多冲突的哈希函数 我试过这个。但是,我不确定是否在某个地方没有集群 @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (

biginter太大,无法转换为整数。但是我必须将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();
}