0

假设我有一个包含一些键值对的列表和一个包含许多值的数组。

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

我想检查的是,如果所有值都具有相同的 keyvalues条目。list

编辑 为了澄清,列表中的每个键都可能具有具有多个值的键

4

2 回答 2

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在该列表中。
于 2012-11-05T12:59:29.937 回答
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;
}

这样你就可以检查你所有的Values 是否存在于 aListMap

于 2012-11-05T12:47:15.333 回答