0
static int hash(int h) {
    // This function ensures that hashCodes that differ only by
    // constant multiples at each bit position have a bounded
    // number of collisions (approximately 8 at default load factor).
    h ^= (h >>> 20) ^ (h >>> 12);
    return h ^ (h >>> 7) ^ (h >>> 4);
}

このハッシュメソッドがこのように設計された理由を誰か教えてもらえますか?利点は何ですか?

4

1 に答える 1

3

Open JDK Sourceが表示されている場合は、

このメソッドにはコメントがあります...

/**
          * Applies a supplemental hash function to a given hashCode, which
          * defends against poor quality hash functions.  This is critical
          * because HashMap uses power-of-two length hash tables, that
          * otherwise encounter collisions for hashCodes that do not differ
          * in lower bits. Note: Null keys always map to hash 0, thus index 0.
 */
于 2013-07-22T04:56:42.937 に答える