ハッシュテーブルに他のハッシュテーブルに存在するすべてのキーと値のペアが含まれているかどうかを調べる組み込みのJavaメソッドはありますか?例えばjavaハッシュテーブルに別のハッシュテーブルのキーと値のペアが含まれているかどうかを確認する方法
:
h1={{0,1},{1,4},{2,5},{3,6}}
h2={{0,1},{2,5}}
この場合には、h1
はh2
からキーと値のペアが含まれていることは事実です。ここで
ハッシュテーブルに他のハッシュテーブルに存在するすべてのキーと値のペアが含まれているかどうかを調べる組み込みのJavaメソッドはありますか?例えばjavaハッシュテーブルに別のハッシュテーブルのキーと値のペアが含まれているかどうかを確認する方法
:
h1={{0,1},{1,4},{2,5},{3,6}}
h2={{0,1},{2,5}}
この場合には、h1
はh2
からキーと値のペアが含まれていることは事実です。ここで
することができますHashtable
には方法はありませんこれを直接チェックしますが、各Hashtable
に対してentrySet()メソッドを使用して、すべてのキーと値のペアのSet
を取得することができます。このセットは、指定されたコレクションのすべての要素が含まれている場合、それ
はtrueを返しますので、
次に、あなただけの、それらの一方が他方のサブセットであるかどうかを確認するためにcontainsAll()を使用することができます。 指定されたコレクションもセットである場合、このメソッドはこのセットのサブセットである場合はtrueを返します。
// h1={{0,1},{1,4},{2,5},{3,6}}
Hashtable<Integer, Integer> h1 = new Hashtable<>();
h1.put(0, 1);
h1.put(1, 4);
h1.put(2, 5);
h1.put(3, 6);
// h2={{0,1},{2,5}}
Hashtable<Integer, Integer> h2 = new Hashtable<>();
h2.put(0, 1);
h2.put(2, 5);
Set<Entry<Integer, Integer>> e1 = h1.entrySet();
Set<Entry<Integer, Integer>> e2 = h2.entrySet();
System.out.println(e2.containsAll(e1)); // false
System.out.println(e1.containsAll(e2)); // true
ありがとう、これは私が必要としていたものです。 – tinyhamster
は、キーまたはキーと2つの異なるマップの値と一致する方法を実証するために、少量のサンプルプログラムです:
public class HashMapMatch {
public boolean hasMatchingKey(String key, Map m1, Map m2){
return m1.containsKey(key) && m2.containsKey(key);
}
public boolean hasMatchingKeyAndValue(String key, Map m1, Map m2){
if(hasMatchingKey(key, m1, m2)){
return m1.get(key).equals(m2.get(key));
}
return false;
}
public static void main(String[] args) {
HashMapMatch matcher = new HashMapMatch();
Map<String, Integer> map1 = new HashMap<>();
map1.put("One",1);
map1.put("Two",22);
map1.put("Three",3);
Map<String, Integer> map2 = new HashMap<>();
map2.put("One",1);
map2.put("Two",2);
map2.put("Four",4);
System.out.println("Has matching key? :" + matcher.hasMatchingKey("One", map1, map2));
System.out.println("Has matching key? :" + matcher.hasMatchingKey("Two", map1, map2));
System.out.println("Has matching key? :" + matcher.hasMatchingKey("Three", map1, map2));
System.out.println("Has matching key value: :" + matcher.hasMatchingKeyAndValue("One", map1,map2));
System.out.println("Has matching key value: :" + matcher.hasMatchingKeyAndValue("Two", map1,map2));
}
}
は出力を生成します。
Has matching key? :true
Has matching key? :true
Has matching key? :false
Has matching key value: :true
Has matching key value: :false
一致するキーがあるかどうか、またはキーと値が正確に一致するかどうかを知りたいですか?ちなみに、HashMapはHashTable(通常はHashTable)ではなくHashMapを使用してください。 – pczeus
キーと値が正確に一致するかどうかを知る必要があります。この場合、JavaのHashTable.containsメソッドは役に立ちません。また、なぜ私はHashTable上でHashMapを使用すべきですか? – tinyhamster
[Javadoc](https://docs.oracle.com/javase/8/docs/api/java/util/Hashtable.html)から:「スレッドセーフな実装が必要ない場合は、 'HashTable'の代わりに' HashMap'を使用します。 – bcsb1001