title: Why does the method hash(int h) of HashMap like this?
body: <pre><code>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 &gt;&gt;&gt; 20) ^ (h &gt;&gt;&gt; 12);
      return h ^ (h &gt;&gt;&gt; 7) ^ (h &gt;&gt;&gt; 4);
  }
  </code></pre>
  
  <p>Could someone tell me that why this hash method designned like this?What is the benefit?</p>