Не понимаю почему после первого удаления значения на втором цикле получаю ошибку ConcurrentModificationException. Объясните пожалуйста
package com.javarush.task.task08.task0816;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/*
Добрая Зинаида и летние каникулы
*/
public class Solution {
public static HashMap<String, Date> createMap() throws ParseException {
DateFormat df = new SimpleDateFormat("MMMMM d yyyy", Locale.ENGLISH);
HashMap<String, Date> map = new HashMap<String, Date>();
map.put("Stallone", df.parse("JUNE 1 1980"));
//напишите тут ваш код
map.put("А", df.parse("JUNE 1 1980"));
map.put("В", df.parse("SEPTEMBER 5 1980"));
map.put("Ы", df.parse("JULY 1 1980"));
map.put("Ф", df.parse("AUGUST 1 1980"));
map.put("П", df.parse("JANUARY 5 1980"));
map.put("Л", df.parse("FEBRUARY 1 1980"));
map.put("д", df.parse("JULY 1 1980"));
map.put("к", df.parse("OCTOBER 7 1980"));
map.put("е", df.parse("JUNE 1 1980"));
return map;
}
public static void removeAllSummerPeople(HashMap<String, Date> map) {
//напишите тут ваш код
Iterator<Map.Entry<String, Date>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Date> myMap = iterator.next();
if ((myMap.getValue().getMonth() > 4) && (myMap.getValue().getMonth() < 8)) {
map.remove(myMap.getKey());
}
}
System.out.println(map);
}
public static void main(String[] args) throws ParseException {
removeAllSummerPeople(createMap());
}
}