Java, Map, как сравнить наличие всех ключ-значение в одной карте и в другой

Есть две мапы:

general = {title=Cymbeline, year=1611, author=Shakespeare}

и

dictionary = {year=1611, author=Shakespeare}

Мне нужно, если каждое ключ-значение dictionary присутствует в general вернуть true, иначе false.

Помогите, пожалуйста, я всю голову сломал.


Ответы (1 шт):

Автор решения: Byb

Если вам в точности нужно сравнивать каждую пару ключ-значение, то подойдёт вот такой вариант:

general.entrySet().containsAll(dictionary.entrySet())

Здесь мы проверяем, является ли множество пар второй мапы подмножеством пар первой мапы.

Пример:

Map<String, Object> general = Map.of(
    "title", "Cymbeline",
    "year", 1611,
    "author", "Shakespeare"
);
Map<String, Object> dictionary = Map.of(
    "year", 1611,
    "author", "Shakespeare"
);
System.out.println(general.entrySet().containsAll(dictionary.entrySet()));

Результат:

true

Если какую-нибудь из пар в dictionary поменять, или добавить новую пару, то в результате мы уже получим false, так как во множестве general такой пары не найдётся.

→ Ссылка