2012-11-05 93 views
0

比方說,我有一個包含一些鍵值對的列表和一個包含多個值的數組。檢查鍵值對列表中的相同鍵的值

public boolean hasSameKey(List<Map.Entry<Key, Value>> list, Value ... values) { 
    return ?; 
} 

我想檢查什麼是,如果在values所有值都在list相同的密鑰的條目。 Map<Key, List<Value>>你可以這樣做:

public boolean hasSameKey(Map<Key, List<Value>> multimap, Value ... values) { 
    for(Key key : multimap.keySet()) { 
     if (map.get(key).containsAll(Arrays.asList(values))) { 
      return true; 
     } 
    } 
    return false; 
} 

編輯 爲了澄清,列表中的每個關鍵。如果你使用像羅希特耆那教的多重映射建議可能存在的按鍵與幾個值

+4

如果是'Map'爲什麼你不使用'Map '? –

+0

您的意思是說,在地圖中,每個值都已經存在一個關鍵字,或者每個值都具有相同的關鍵字? –

+0

@AdamArold - 地圖每個鍵只能存儲一個值。 – Theodor

回答

3

從我的問題中得到的結果,我會先改變你的方法簽名,以Map<Key, List<Value>>作爲第一個參數。

然後你就可以這樣進行: -

public boolean hasSameKey(Map<Key, List<Value>> map, Value... values) { 

    for (Key key: map.keySet()) { 
     if (map.get(key).containsAll(Arrays.asList(values))) { 
      return true; 
     } 
    } 
    return false; 
} 
  • map.get(key) - 獲取List<Value>的對應鍵。
  • List#containsAll方法檢查特定collection中的所有元素是否在該列表中。
0

通過這種方式,您可以檢查Map中是否存在List中的所有Value