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())へのキャストになりますか?