在键值对列表中检查具有相同键的值

时间:2012-11-05 12:40:40

标签: java map key-value

假设我有一个包含一些键值对的列表,以及一个包含多个值的数组。

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

我想检查的是,如果values中的所有值都在list中的条目与相同的密钥

修改 为了澄清,列表中的每个键可能包含具有多个值的键

2 个答案:

答案 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;
}

通过这种方式,您可以检查ValueList中是否存在Map所有{{1}}。