google/guava@GitHubでは、 Hashingクラスが一貫性のある hashing@wikiを実装しています。メソッドには次のオブジェクトconsistentHash
が必要です。HashCode
public static int consistentHash(HashCode hashCode, int buckets) {
return consistentHash(hashCode.padToLong(), buckets);
}
Row
プロトタイプの分散キー値ストレージを実装しており、カスタムキーとキーによってキースペースを分割したいと考えていColumn
ます。
public int locateNodeIndexFor(Row r, Column c, int buckets) {
HashCode hashCode = // How to generate a HashCode based on @param r and @param c?
return Hashing.consistentHash(hashCode, buckets);
}
ここで、 class Row
(および class Column
) は単にString
フィールドのラッパーであり、独自のhashCode()
メソッドを持っています。私の質問は、呼び出すためにHashCode
@param r と @param c に基づいてa を生成する方法です。locateNodeIndexFor
Hashing#consistentHash