にいくつかの値を入れたいです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. HashMapaまたは 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");