Подскажите, пожалуйста, что не так, при компиляции выдает ошибку:
"java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1445)
at java.util.HashMap$KeyIterator.next(HashMap.java:1469)
at com.javarush.task.task08.task0816.Solution.removeAllSummerPeople(Solution.java:30)
at com.javarush.task.task08.task0816.Solution.main(Solution.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)"
Вроде, как мне кажется, логически делаю все правильно -- перевожу в String и проверяю методом contains
Ругается на метод "removeAllSummerPeople"
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 Map<String, Date> createMap() throws ParseException {
DateFormat dateFormat = new SimpleDateFormat("MMMMM d yyyy", Locale.ENGLISH);
Map<String, Date> map = new HashMap<>();
map.put("Сталлоне", dateFormat.parse("JANUARY 17 2012"));
map.put("Сильвестр", dateFormat.parse("FEBRUARY 12 2012"));
map.put("Антанта", dateFormat.parse("MARCH 3 2012"));
map.put("Крокозябр", dateFormat.parse("APRIL 1 2012"));
map.put("Валеркинс", dateFormat.parse("MAY 6 2012"));
map.put("Штопор", dateFormat.parse("JUNE 5 2012"));
map.put("Ступор", dateFormat.parse("JULY 4 2012"));
map.put("Сталлонесима", dateFormat.parse("AUGUST 3 2012"));
map.put("Орландо", dateFormat.parse("SEPTEMBER 2 2012"));
map.put("Блум", dateFormat.parse("AUGUST 1 2012"));
return map;
}
public static void removeAllSummerPeople(Map<String, Date> map) {
for(String i : map.keySet())
{
if (map.get(i).toString().contains("Jun") || (map.get(i).toString().contains("Jul")) || (map.get(i).toString().contains("Aug")))
{
map.remove(i);
}
}
}
public static void main(String[] args ) throws ParseException{
Map<String,Date> map = createMap();
for(String i : map.keySet()){
System.out.println(map.get(i).toString());
}
System.out.println("_________________");
removeAllSummerPeople(map);
}
}