にいくつかの値を入れたいですmap<String,String>
。しかし、等しいキーでデータをシフトしたくありません。
例:
map.put("foo","some");
map.put("bar","thing");
map.put("foo","new");
返さなければならないfoo-some,bar-thing,foo-new.
しかし、いいえbar-thing,foo-new
。
どの種類のマップを使用すればよいですか?
にいくつかの値を入れたいですmap<String,String>
。しかし、等しいキーでデータをシフトしたくありません。
例:
map.put("foo","some");
map.put("bar","thing");
map.put("foo","new");
返さなければならないfoo-some,bar-thing,foo-new.
しかし、いいえbar-thing,foo-new
。
どの種類のマップを使用すればよいですか?
標準ランタイムには含まれていないため、サードパーティのライブラリが必要になります。Google Guava ライブラリは積極的にメンテナンスされており、非常に強力です。
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html
複数の整数を単一の文字列キーにマップしようとしていると思います。可能ですが、キーをList
. HashMap
aまたは aのどちらを選択するTreeMap
かは、エントリをキーでソートしたままにするかどうかによって異なります。
並べ替えはあなたが探しているものではないと思います。したがって、 aHashMap
で十分です。
public Map<String, List<Integer>> map = new HashMap<String, List<Integer>>();
次に、同じキーに複数の値を追加できます
public void addToMappedList(Map<String, List<Integer>> map,
String key, Integer value) {
List<Integer> existingValues = map.get(key);
if (existingValues == null) {
existingValues = new ArrayList<Integer>();
map.put(key, existingValues);
}
existingValues.add(value);
}
addToMappedList(map, "foo", 1);
addToMappedList(map, "foo", 2);
から個々の値を削除する方法は次のとおりList
です。返されるブール値は、 が実際に見つかり、 から削除されたかどうかを示しvalue
ますList
。
public boolean removeFromMappedList(Map<String, List<Integer>> map,
String key, Integer value) {
List<Integer> existingValues = map.get(key);
if (existingValues != null) {
return existingValues.remove(value);
}
return false;
}
removeFromMappedList(map, "foo", 1); // true
removeFromMappedList(map, "foo", 3); // false
List
キー全体とそれに関連付けられているを削除するには、Map
直接
map.remove("foo");