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 такой пары не найдётся.