假设我有一个包含一些键值对的列表,以及一个包含多个值的数组。
public boolean hasSameKey(List<Map.Entry<Key, Value>> list, Value ... values) {
return ?;
}
我想检查的是,如果values
中的所有值都在list
中的条目与相同的密钥。
修改 为了澄清,列表中的每个键可能包含具有多个值的键
答案 0 :(得分: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
中的所有元素是否都在该列表中。答案 1 :(得分:0)
如果你使用像Rohit Jain建议的多地图: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;
}
通过这种方式,您可以检查Value
中List
中是否存在Map
所有{{1}}。