Доброго времени суток! Программа не проходила проверку. Понял, что проблема скорее всего в том, что после того как второй цикл while (iter2.hasNext()) проходит все элементы map в первый раз, итератор "iter2" получает максимальное значение и при следующем обращении к данному циклу он сразу из него выходит и сравнение не происходит. Подскажите как "обнулить" iter2, что бы второй цикл запускался вновь при получении новых значений итератором iter? Или возможно есть какой-нибудь более правильный способ организации данного алгоритма? Условие: Создать словарь (Map<String, String>) занести в него десять записей по принципу «фамилия» — «имя». Удалить людей, имеющих одинаковые имена.
public class Solution {
    public static HashMap<String, String> createMap() {
        HashMap<String,String> map=new HashMap<String,String>();
        map.put("Иванов","Иван");
        map.put("Иванов2","Сер");
        map.put("Иванов3","Фей");
        map.put("Иванов4","Колz");
        map.put("Иванов5","Иван");
        map.put("Иванов6","Жора");
        map.put("Иванов7","Иван");
        map.put("Иванов8","Иван");
        map.put("Иванов9","Иван");
        map.put("Иванов10","Иван");
        return map;
    }

    public static void removeTheFirstNameDuplicates(HashMap<String, String> map) {
        Iterator<Map.Entry<String,String>> iter=map.entrySet().iterator();
        Iterator<Map.Entry<String,String>> iter2=map.entrySet().iterator();
        while(iter.hasNext())
        {
            Map.Entry<String,String> pair=iter.next();
            while (iter2.hasNext())
            {
                Map.Entry<String,String> pair2=iter2.next();
                if(pair.getValue().equals(pair2.getValue()) && !pair.getKey().equals(pair2.getKey()))
                {removeItemFromMapByValue(map,pair.getValue()); break;}
            }
        }
    }

    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) {

    }
}