0

いくつかのキーと値のペアを含むリストと、いくつかの値を含む配列があるとします。

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

私がチェックしたいのは、のすべての値に同じキーvaluesのエントリがあるかどうかです。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#containsAllcollectionメソッドは、特定の要素のすべてがそのリストにあるかどうかをチェックします。
于 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;
}

このようにして、すべてのがにValue存在Listするかどうかを確認できますMap

于 2012-11-05T12:47:15.333 に答える