Во-первых, не могу понять условие: "Метод removeTheFirstNameDuplicates() должен удалять из словаря всех людей, имеющие одинаковые имена." Почему этот метод должен удалять одинаковые имена? У нас ведь за удаление отвечает метод removeItemFromMapByValue(). Если удалять будет метод removeTheFirstNameDuplicates(), тогда что останется методу removeItemFromMapByValue()? Во-вторых, если передавать в метод removeItemFromMapByValue исходный map, и только одно значение name, то метод и будет удалять только одну пару дубликатов. Чтобы он удалял все пары, нужно либо в этот метод передавать все найденный дубликаты имен сразу (тогда это должен быть массив имен, а не одно имя), либо после каждого удаления должен возвращаться обновленный map с удаленной парой, и приходить обратно уже с новым значением name. В общем, застрял на этой задаче. Написал вот такой код, но он не проходит:
public class Solution {
    public static HashMap<String, String> createMap() {
        HashMap<String, String> map = new HashMap<>();

        map.put("Иванов", "Иван" );
        map.put("Петров", "Петр" );
        map.put("Сидоров", "Сидор" );
        map.put("Николаев", "Николай" );
        map.put("Семенов", "Иван" );
        map.put("Семенов1", "Семен1" );
        map.put("Петров1", "Петр1" );
        map.put("Иванов5", "Иван5" );
        map.put("Олегов", "Олег" );
        map.put("Романов", "Николай" );
        return map;
    }
    public static void removeTheFirstNameDuplicates(HashMap<String, String> map) {
        Iterator<Map.Entry<String,String>> iter = map.entrySet().iterator();
        HashSet<String> temp = new HashSet<>();
        while (iter.hasNext()){
            Map.Entry<String, String> pair = iter.next();

           if(!temp.add(pair.getValue())) {
              removeItemFromMapByValue(map,pair.getValue());

           }

        }

    }

    public static void removeItemFromMapByValue(HashMap<String, String> map, String value) {
        HashMap<String, String> copy = new HashMap<String, String>(map);
        for (Map.Entry<String, String> pair : copy.entrySet()) {
            if (pair.getValue().equals(value))
                map.remove(pair.getKey());
        }
    }

    public static void main(String[] args) {
    }
}