Как проверить, входят ли все элементы одного словаря в другой?

175
15 декабря 2017, 03:05

Как можно проверить, содержит ли словарь map1 все пары <Key, Value>, содержащиеся в map2?

Answer 1

В зависимости от того, нужно ли вам проверять только наличие в map1 всех ключей из map2, или еще и равенство соответствующих значений, можете использовать один из двух методов:

static boolean containsAllEntries(Map<?,?> map1, Map<?,?> map2) {
    return map1.entrySet().containsAll(map2.entrySet());
}  
static boolean containsAllKeys(Map<?,?> map1, Map<?,?> map2) {
    return map1.keySet().containsAll(map2.keySet());
}  
public static void main(String[] args) {
    HashMap<String, String> 
        map1 = new HashMap<>(), map2 = new HashMap<>();
    map1.put("1", "Один");  map2.put("1", "Один");
    map1.put("2", "Два");       map2.put("2", "Два");
    map1.put("3", "Три");       map1.put("3", "Три");
    map1.put("4", "Четыре");
    map1.put("5", "Пять");
    System.out.println("map1 contains all keys    from map2: " + containsAllKeys(map1, map2));
    System.out.println("map1 contains all entries from map2: " + containsAllEntries(map1, map2));
    map1.put("2", "Не два!");
    System.out.println("map1 contains all keys    from map2: " + containsAllKeys(map1, map2));
    System.out.println("map1 contains all entries from map2: " + containsAllEntries(map1, map2));
    map1.remove("2");
    System.out.println("map1 contains all keys    from map2: " + containsAllKeys(map1, map2));
    System.out.println("map1 contains all entries from map2: " + containsAllEntries(map1, map2));
}
READ ALSO
Почему не инжектится переменная Dagger2

Почему не инжектится переменная Dagger2

Вот сделал имплементацию дагера и вроде как все работет, вот только context переменная не хочет инжектиться

245
Заменить итератор циклом

Заменить итератор циклом

Подскажите пожалуйста, как переписать фрагмент кода, используя вместо итератора цикл:

192
Java Swing: длина \t в JTextPane

Java Swing: длина \t в JTextPane

Делаю редактор кода The C language на платформе Java SwingКак изменить длину символа табуляции в JTextPane с 8 до 4 или 2

211
Утечка памяти ли это? Как исправить?

Утечка памяти ли это? Как исправить?

Пишу Android приложение с использованием таких библиотек:

172