と の両方で実行されるアプリケーションがあり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
は未定義です。つまり、常に変化する可能性があります (実際に変化します)。これは、コードだけでなく、オブジェクトのハッシュ コードの値にも依存し、それ自体がバージョンごとに異なるだけでなく、実行ごとに異なる場合もあります。
LinkedHashMap
HashMap
予測可能な反復順序を持つ代替手段として具体的に存在します。
于 2012-04-25T15:57:12.130 に答える
0
HashMap の実装が変更されたと思います。HashMap は順序を保証しないため、新しいリリースで通知なしに変更される可能性があるため、それに依存するべきではありません。
于 2012-04-25T15:58:14.787 に答える