Делал по этой схеме: 1. В методе removeTheFirstNameDuplicates(Map<String, String> map) создадим мапу<String, INteger> 2. в цикле по значениям первоначальной мапы положим в новую мапу в качестве ключей - имена, а в качестве значений будем указывать количество раз, которое данное имя встречается, например for (String v : map.values()) { если (такого ключа еще нет null ) кладем этот ключ в новую мапу со значением 1; // newMap.put(v, 1); иначе вновь кладем данный ключ и добавляем единицу к значению // newMap.put(v, newMap.get(v) +1)); } таким образом мы получили новый словарь с именами - количеством таких имен в первоначальной мапе. 3. еще один цикл по всей новой мапе (pair : newMap.entrySet()), в котором сравниваем с единицей значения новой мапы. если больше 1, вызываем метод removeItemFromMapByValue(map, pair.getKey());