マップ内のキーに複数の値を与えようとしています。この種のものが機能することを望みました.. mapp.put("key1","value1") mapp.put("key1","value2")。最初の値「value1」は「value2」で上書きされています。両方の値を保持する方法は? これを行うには、マップ以外の何かを使用する必要がありますか?
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);
}
の値が必要な場合はkey1
、List
List<String> values = map.get("key1");
于 2012-04-25T05:25:07.557 に答える
0
その動作のマップが必要な場合は、マルチマップもチェックしてください
于 2012-04-25T05:20:30.010 に答える