Доброе время суток, в задаче "Нам повторы не нужны" реализовываю проверку на повторяющиеся значения в мэпе и повторяющиеся значения заношу в список для значений на удаление, но в процессе работы код, выкидывает ConcurrentModificationException в строке 38, не могу понять почему, я ведь использую итератор?
//получаю итератор для прохода по мапу
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();

//создаю список состоящий из значений мапа для сравнения значений мапа с ним
ArrayList<String> listOfValues = new ArrayList<>(map.values());

// создаю счетчик совпадений, если совпадений больше одного, значит значение в мэпе повторяется
int counter = 0;

// итоговый список со значениями, которые нужно удалить (повторяющиеся значения)
ArrayList<String> valuesToDel = new ArrayList<>();

// поехали по мэпу
while(iterator.hasNext()){
            //получаем значение из мэпа
            Map.Entry<String, String> pair = iterator.next();
            String name = pair.getValue();

            // сравниваю текущее значение из мэпа со списком всех значений
            for(String v : listOfValues) {
                if (name.equals(v)) {
                    counter++;

                    //Если список со значениями на удаление пуст,
                   //добавляю значение которое повторяется больше 1 раза
                    if (counter > 1 && valuesToDel.isEmpty()){
                        valuesToDel.add(name);

                    //Если список на удаление не пуст, проверяю,
                    //есть ли уже в списке на удаление текущее имя
                    } else if (counter > 1) {

                        //итератор для прохода по списку значений на удаление
                        Iterator<String> iteratorListToDel = valuesToDel.iterator();
                        while (iteratorListToDel.hasNext()) {

                        //если значения в списке нет, добавляем значение
                            if (!(iteratorListToDel.next().equals(name))){
                                valuesToDel.add(name);
                            } else {
                                System.out.println("Имя уже есть");
                            }
                        }

                     }
                }

            counter = 0;
        }