簡體   English   中英

我應該使用哪種地圖?

[英]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 HashMapTreeMap之間進行選擇取決於您是否要按鍵對條目進行排序。

我相信排序不是您想要的。 因此,一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM