Java2のバージョンが1.2以前の場合、Stringオブジェクトの16文字以上の部分はhashCodeの計算に用いられません。そのためhashCodeの衝突が起きやすくなっています。 Java2のバージョンが1.3以降の場合、hashCodeの計算方法が改良され、16文字以上の部分も計算に利用されるようになりました。 BOOLEANLABEL さんの String.hashCode() の変遷 が参考になります。 バージョン1.2以前での衝突するhashCodeのBugレポートが Bug ID: 1258091 String.hashCode() produces the same value for too many unequal strings. にあります。
IT関連の技術やプログラミングを中心に記事を書いています。ハードウェアも好きなので、日々のちょっとしたお役立ち情報も投稿しています。