Добрый вечер! public class Solution { public static Map<String, String> createMap() { Map<String, String> map = new HashMap<>(); map.put("1", "A"); map.put("2", "B"); map.put("3", "C"); map.put("4", "D"); map.put("5", "E"); map.put("6", "A"); map.put("7", "W"); map.put("8", "Z"); map.put("9", "Q"); map.put("10", "R"); return map; } public static void removeTheFirstNameDuplicates(Map<String, String> map) { HashMap<String, String> copy = new HashMap<String, String>(map); Iterator<Map.Entry<String, String>> iterator = copy.entrySet().iterator(); while (iterator.hasNext()) { int count = 0; Map.Entry<String, String> pair = iterator.next(); String value = pair.getValue(); for (Map.Entry<String, String> pair1 : copy.entrySet()) { if (pair1.getValue().equals(value)) { count +=1; if (count > 1) { removeItemFromMapByValue(map, value); } } } } } public static void removeItemFromMapByValue(Map<String, String> map, String value) { Map<String, String> copy = new HashMap<>(map); for (Map.Entry<String, String> pair : copy.entrySet()) { if (pair.getValue().equals(value)) { map.remove(pair.getKey()); } } } public static void main(String[] args) { //removeTheFirstNameDuplicates(createMap()); } } //System.out.println(value + " " + pair.getKey()); ----------------------------------------------------------------------------------------------------- У меня вопрос по методу removeTheFirstNameDuplicates, не очень понял. Так вот какой вопрос, а что у нас по итогу остается в мапе? 0? Просто ведь по логике метода мы заносим в переменную String value элементы get.Value(), дальше в этой же итерации у нас проверяется pair1.getValue().equals(value), где pair1.getValue() и value указывают на одно и тоже слово. Получается у нас метод сравнивает в каждой итерации постоянно одинаковые слова и удаляет мапу под 0. Я правильно понял? Если нет, прошу очень объяснить как работает метод, в таком случае.