4

HashMap に異なるキーを持つ 4 つの値を挿入しています。コードスニペット :

HashMap<Integer, String> choice = new HashMap<Integer, String>();

choice.put(1, "1917");
choice.put(2, "1791");
choice.put(3, "1902");
choice.put(4, "1997");

しかし、そのマップ値を出力すると、次のような結果が返されます。

{4=1997, 1=1917, 2=1791, 3=1902}

配置/挿入した方法で順番にマップ値を取得するにはどうすればよいですか?

4

3 に答える 3

18

LinkedHashMap代わりに を使用できます。これにより、挿入順序が維持されます。

この実装が HashMap と異なる点は、そのすべてのエントリを実行する二重リンク リストを維持することです。この連結リストは反復順序を定義します。これは通常、キーがマップに挿入された順序 (insertion-order)です。

次のようにコードを変更できます。

Map<Integer, String> choice = new LinkedHashMap<Integer, String>();

//rest of the code is the same
于 2012-07-23T12:55:47.727 に答える
2

ハッシュ テーブルである LinkedHashMap と Map インターフェイスのリンク リスト実装を使用できます。

二重連結リストを使用して値が挿入される順序と同じ順序を維持します。

参照: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/LinkedHashMap.html

于 2012-07-23T13:02:38.293 に答える
0

[編集] OP が求めていることは、私には完全には明らかではありません。OP は、「マップからアイテムを挿入順に取得するにはどうすればよいですか?」と尋ねている可能性があります。それがOPの意味である場合、次の情報は解決策ではありません。

OPが「キーでソートされたハッシュからアイテムを取得するにはどうすればよいですか?」と尋ねている場合 次に、以下がポイントです。ハッシュ/連想配列のソートされたキーを取得することは、一般的な操作です。


答えは、 Java で Map 値をキーでソートする方法にあります

List sortedKeys=new ArrayList(yourMap.keySet());
Collections.sort(sortedKeys);

キーが格納および取得される順序が気になる場合は、TreeMap代わりに a を使用することを検討してください。要素の数が非常に多い (数百万以上) 場合を除き、パフォーマンスの違いはあまり目立ちません。

于 2012-07-23T12:57:15.903 に答える