Запускаю на проверку, элементы в коллекции до вызова метода removeAllSummerPeople() совпадают с элементами коллекции после вызова этого метода. Почему элементы не удалились?
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.time.*;
import java.util.Map;
/*
Добрая Зинаида и летние каникулы
*/
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("a", df.parse("JUNE 1 1980"));
map.put("b", df.parse("AUGUST 1 1222"));
map.put("c", df.parse("JULY 1 1222"));
map.put("d", df.parse("JUNE 2 1222"));
map.put("e", df.parse("JULY 15 12"));
map.put("f", df.parse("AUGUST 31 122"));
map.put("g", df.parse("SEPTEMBER 1 1222"));
map.put("h", df.parse("MARCH 1 1222"));
map.put("i", df.parse("DECEMBER 1 1222"));
map.put("j", df.parse("MAY 1 1222"));
return map;//напишите тут ваш код
}
public static HashMap<String, Date> removeAllSummerPeople(HashMap<String, Date> map) throws Exception {
for (Map.Entry<String, Date> pair : map.entrySet()) {
Date date = pair.getValue();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
if ( (localDate.getMonthValue() > 5) & (localDate.getMonthValue() < 9) ) {
map.entrySet().remove(pair.getKey());
}
}
return map;
}
public static void main(String[] args) throws Exception {
HashMap<String, Date> map = createMap();
removeAllSummerPeople(map);
for (Map.Entry<String, Date> pair : map.entrySet()) {
System.out.println(pair);
}
}
}