0

Map のキーに関連付けられたすべての値を取得したいと考えています。たとえば、

Map tempMap = new HashMap();
tempMap.put("1","X");
tempMap.put("2","Y");
tempMap.put("3","Z");
tempMap.put("1","ABC");
tempMap.put("2","RR");
tempMap.put("1","RT");

キー 1 に関連付けられたすべての値を取得する方法は?

4

6 に答える 6

7

理解しなければならないことは、Map ではキーが一意であることです。

つまりその後

tempMap.put("1","X");

「1」は「X」にマッピングされます

以降

tempMap.put("1","ABC");

「1」は「ABC」にマッピングされ、前の値 (「X」) は失われます

于 2009-02-12T13:49:28.127 に答える
5

HashMap javadoc から:

public V put(K key, V value)

指定された値をこのマップ内の指定されたキーに関連付けます。マップに以前にキーのマッピングが含まれていた場合、古い値は置き換えられます。

于 2009-02-12T13:51:45.687 に答える
3

あなたができることはこれです:

Map<String, List<String>> tempMap = new HashMap<String, List<String>>();
tempMap.put("1", new LinkedList<String>());
tempMap.get("1").add("X");
tempMap.get("1").add("Y");
tempMap.get("1").add("Z");

for(String value : tempMap.get("1")) {
  //do something
}

これにより、キー「1」に対応する値が独自のリストに区分化され、簡単にアクセスできるようになります。リストを初期化することを忘れないでください...そうしないと、NullPointerExceptionsがあなたを迎えに来ます。

ユヴァル=8-)

于 2009-02-12T14:02:47.503 に答える
3

できない

google collectionsの Multimapを使ってみてください

于 2009-02-12T13:47:47.787 に答える
3

重要な何かが欠けていると思います:

Map tempMap = new HashMap();
tempMap.put("1","X");
tempMap.put("2","Y");
tempMap.put("3","Z");
tempMap.put("1","ABC"); // replaces "X"
tempMap.put("2","RR"); // replaces "Y"
tempMap.put("1","RT"); // replaces "ABC"

また、可能な場合はジェネリックを使用する必要があるため、最初の行は次のようにする必要があります。

Map<String, String> tempMap = new HashMap<String, String>();
于 2009-02-12T13:50:00.607 に答える
1

これを行うには、各キーを値のセットに関連付け、対応するロジックを使用してセットを作成し、マップで単純な put() および get() の代わりに値を入力/削除する必要があります。

または、Apache commons にあるような、既製の Multimap 実装の 1 つを使用することもできます。

于 2009-02-12T14:04:08.433 に答える