[英]Which kind of map should I use?
我想在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
或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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.