我想在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
。
我应该使用哪种地图?
答案 0 :(得分:4)
您需要第三方库,因为它不在标准运行时中。 Google Guava库得到了积极维护,功能非常强大。
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html
答案 1 :(得分:2)
我相信你正在尝试将多个整数映射到单个字符串键。如果您将密钥映射到List
,则可以。 HashMap
或TreeMap
之间的选择取决于您是否希望按键分类。
我认为排序不是你想要的;所以,HashMap
就足够了。
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");