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.にあります。
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.にあります。
コメント