いくつかのキーと値のペアを含むリストと、いくつかの値を含む配列があるとします。
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>> 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
メソッドは、特定の要素のすべてがそのリストにあるかどうかをチェックします。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
。