Метод removeAllSummerPeople не удаляет записи.
Чтобы разобраться, вывел map, преобразованный методом removeAllSummerPeople в консоль, а там:
Сталлоне:Tue May 01 00:00:00 MSK 1900
Хоган:Tue May 01 00:00:00 MSK 1900
Чан:Tue May 01 00:00:00 MSK 1900
Рокки:Tue May 01 00:00:00 MSK 1900
Уиллис:Tue May 01 00:00:00 MSK 1900
Стетхам:Tue May 01 00:00:00 MSK 1900
Бильмондо:Fri Jun 01 00:00:00 MSK 1900
Терминатор:Tue May 01 00:00:00 MSK 1900
Рембо:Sun Jul 01 00:00:00 MSK 1900
Норрис:Tue May 01 00:00:00 MSK 1900
Собственно, вопрос: почему год установился 1900, хотя я устанавливал 0 (39-я строка).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("MAY 1 2012"));
map.put("Бильмондо", dateFormat.parse("JUNE 1 2012"));
map.put("Рембо", dateFormat.parse("JULY 1 2012"));
map.put("Рокки", dateFormat.parse("MAY 1 2012"));
map.put("Терминатор", dateFormat.parse("MAY 1 2012"));
map.put("Стетхам", dateFormat.parse("MAY 1 2012"));
map.put("Уиллис", dateFormat.parse("MAY 1 2012"));
map.put("Норрис", dateFormat.parse("MAY 1 2012"));
map.put("Чан", dateFormat.parse("MAY 1 2012"));
map.put("Хоган", dateFormat.parse("MAY 1 2012"));
return map;
}
public static void removeAllSummerPeople(Map<String, Date> map) throws ParseException {
Map<String,Date> tempMap = new HashMap<>(map); //копия входящего Map
DateFormat dateFormat = new SimpleDateFormat("MMMMMM d yyyy", Locale.ENGLISH);
Date june1 = dateFormat.parse("JUNE 1 0000");
Date august31 = dateFormat.parse("AUGUST 31 0000");
Iterator<Map.Entry<String, Date>> iterator = tempMap.entrySet().iterator(); //итератор по копированной карте
while(iterator.hasNext()){
Date temp = iterator.next().getValue();
temp.setYear(0);
if(temp.after(june1) && temp.before(august31)){
map.remove(iterator.next().getKey());
}
}
}
public static void main(String[] args) {
}
}