と の両方で実行されるアプリケーションがあり1.4ます1.6。要素の順序が1.6バージョンで印刷されているのとは異なり1.4ます。LinkedHashMap問題を修正したものを使用しました。現在、この順序は とまったく同じです1.4。jdk 全体をダウンロードする以外1.4のソースコードは見つかりませんでした。HashMap新しいバージョンで変更された一般的なものを除いて?
1460 次
3 に答える
4
の要素の反復順序はHashMap保証されていないため、実装は自由に変更できました。この欠点は によって修正されましたLinkedHashMap。
このような変更は、たとえばJava 1.4.1 でのハッシュ アルゴリズムの完全な刷新が原因である可能性がありますが、プロジェクトを Java6 に移行したときにそのような変更に気付いたため、そのバージョンにも変更がありました。
于 2012-04-25T15:57:00.157 に答える
2
の反復の順序HashMapは未定義です。つまり、常に変化する可能性があります (実際に変化します)。これは、コードだけでなく、オブジェクトのハッシュ コードの値にも依存し、それ自体がバージョンごとに異なるだけでなく、実行ごとに異なる場合もあります。
LinkedHashMapHashMap予測可能な反復順序を持つ代替手段として具体的に存在します。
于 2012-04-25T15:57:12.130 に答える
0
HashMap の実装が変更されたと思います。HashMap は順序を保証しないため、新しいリリースで通知なしに変更される可能性があるため、それに依存するべきではありません。
于 2012-04-25T15:58:14.787 に答える