17

特定の順序で HashMap を設定しましたが、奇妙な順序で繰り返されます!

以下のコードを検討してください。

HashMap<String, String> map = new HashMap<String, String>();
map.put("ID", "1");
map.put("Name", "the name");
map.put("Sort", "the sort");
map.put("Type", "the type");

...

for (String key : map.keySet()) {
    System.out.println(key + ": " + map.get(key));
}

そして結果:

Name: the name
Sort: the sort
Type: the type
ID: 1

エントリを配置するために、それを繰り返す必要があります。どんな助けでも大歓迎です。

4

2 に答える 2

29

それがHashMap内部でどのように機能するかです。挿入順序をさらに記憶するものにHashMap置き換えます。LinkedHashMap

Map<String, String> map = new LinkedHashMap<String, String>();
于 2012-12-15T16:06:41.707 に答える
25

順序は、挿入するキーの関数の結果に依存しhashCode()ます。何か変なことをしない限り、ほとんどがランダムになります (ただし一貫性があります)。あなたが探しているのは、LinkedHashMapなどのソートされたマップです

詳細に興味がある場合は、ここでハッシュテーブルがどのように機能するかについて少し調べてください。

于 2012-12-15T16:07:30.483 に答える