Иногда в программировании возникает задача поиска разницы между двумя наборами данных, такими как словари(ассоциативные массивы). Например, при поиске различий в json файлах. Для этого даже существуют специальные сервисы, например, http://www.jsondiff.com/ (попробуйте нажать на ссылку sample data
и затем кнопку Compare).
src/main/java/io/hexlet/MapsDiff.java
Реализуйте функцию genDiff()
, которая сравнивает два словаря и возвращает результат сравнения в виде словаря. Ключами результирующего словаря будут все ключи из двух входящих, а значением - строка с описанием отличий: added
, deleted
, changed
или unchanged
.
Возможные значения:
added
— ключ отсутствовал в первом словаре, но был добавлен во второйdeleted
— ключ был в первом словаре, но отсутствует во второмchanged
— ключ присутствовал и в первом и во втором словаре, но значения отличаютсяunchanged
— ключ присутствовал и в первом и во втором словаре с одинаковыми значениями
HashMap<String, String> data1 = new HashMap<String, String>(
Map.of("one", "eon", "two", "two", "four", "True"));
HashMap<String, String> data2 = new HashMap<String, String>(
Map.of("two", "own", "zero", "4", "four", "True"));
genDiff(data1, data2) // {"one"="deleted", "two"="changed", "four"="unchanged", "zero"="added"}
Подсказки
- Фрагмент этой задачи разбирается в докладе "Ментальное программирование"
Для полного доступа к испытанию нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.