2012-11-05 54 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