1

マップ内のキーに複数の値を与えようとしています。この種のものが機能することを望みました.. mapp.put("key1","value1") mapp.put("key1","value2")。最初の値「value1」は「value2」で上書きされています。両方の値を保持する方法は? これを行うには、マップ以外の何かを使用する必要がありますか?

4

5 に答える 5

2

両方の値を別のコレクション (Vector、Set、Stack など、用途に適したもの、またはその他のもの) に入れ、ハット コレクションを値としてマップに保存します。

ベクトルを使用したランダムな例として:

Vector<Object> myVector = new Vector<Object>();
myVector.add("value1");
myVector.add("value2");
mapp.put("key1", myVector);
于 2012-04-25T05:17:28.263 に答える
1

Mapの Javadoc から、

A map cannot contain duplicate keys; each key can map to at most one value.

したがって、単一のキーに複数の値を入れたい場合は、値をリストに追加し、key1 とリストをマップに入れる必要があります。

于 2012-04-25T05:23:14.047 に答える
1
HashMap<K, HashSet<V>> map = new HashMap<K, HashSet<V>>();
if(!map.containsKey(k)) {
  map.put(k, new HashSet<V>());
}
map.get(k).add(v);

値が重複している場合は、ハッシュセットの代わりにリスト/ベクトルを使用してください。

于 2012-04-25T05:24:21.487 に答える
1

un map with list を使用できます。そんな感じ:

Map<String, List<String>> map = new HashMap<String, List<String>>();

最初の値を持つput akey1の場合:

if (!map.containsKey("key1")) {
    map.put("key1", new LinkedList<String>());
}
map.get("key1").add("value1");

2 番目の値を追加するにはkey1

map.get("key1").add("value2");

これらすべてを 1 つのメソッドで実行できます

public void add(String key, String value) {
    if (!map.containsKey(key)) {
        map.put(key, new LinkedList<String>());
    }
    map.put(key, value);
}

の値が必要な場合はkey1List

List<String> values = map.get("key1");
于 2012-04-25T05:25:07.557 に答える
0

その動作のマップが必要な場合は、マルチマップもチェックしてください

于 2012-04-25T05:20:30.010 に答える