Помогите, пожалуйста, с задачей, не понимаю, как её сделать (хочется без Set и List). Форум уже весь облазил, вижу много комментариев про то, что нельзя удалять элемент map основной во время итерации, надо делать через методы итератора, но честно, не пойму никак это, возможно кто то может объяснить на пальцах? Соответственно ошибка выводится, связанная с этим Exception in thread "main" java.util.ConcurrentModificationException
package com.javarush.task.task08.task0817;
import java.sql.SQLOutput;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/*
Нам повторы не нужны
*/
public class Solution {
public static Map<String, String> createMap() {
//напишите тут ваш код
Map<String, String> map = new HashMap<>();
map.put("Кудряшов", "Иван");
map.put("Куденков", "Олег");
map.put("Кудряшова", "Екатерина");
map.put("Кузнецов", "Иван");
map.put("Спиридонов", "Олег");
map.put("Онежкин", "Иван");
map.put("Луковская", "Екатерина");
map.put("Макеев", "Олег");
map.put("Одарченко", "Светлана");
map.put("Ломоносова", "Светлана");
return map;
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) {
//напишите тут ваш код
Iterator<Map.Entry<String, String>> kooper = map.entrySet().iterator();
while (kooper.hasNext()){
Map.Entry<String, String> joom = kooper.next();
String name = joom.getValue();
removeItemFromMapByValue(map, name);
}
}
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 printAll(Map<String, String> map){
Iterator<Map.Entry<String, String>> tr = map.entrySet().iterator();
while(tr.hasNext()){
Map.Entry<String, String> box = tr.next();
String family = box.getKey();
String name = box.getValue();
System.out.println(family + " - " + name);
}
}*/
public static void main(String[] args) {
/*Map<String, String> finishly = createMap();
removeTheFirstNameDuplicates(finishly);
printAll(finishly);
System.out.println(finishly);*/
}
}