Удалить из словаря людей по сезонам

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("JUL 6 1946"));
    map.put("Фиби Тонкин", dateFormat.parse("JUL 12 1989"));
    map.put("Эдди Редмэйн", dateFormat.parse("JAN 6 1982"));
    map.put("Кен Лоуч", dateFormat.parse("JUN 17 1936"));
    map.put("Усэйн Болт", dateFormat.parse("AUG 21 1986"));
    map.put("Том Мейган", dateFormat.parse("JAN 11 1981"));
    map.put("Энди Гарсиа", dateFormat.parse("APR 12 1956"));
    map.put("Лэнс Хенриксен", dateFormat.parse("MAY 5 1940"));
    map.put("Эсекьель Гарай", dateFormat.parse("OCT 10 1986"));
    map.put("Кэтрин Лэнгфорд", dateFormat.parse("APR 29 1996"));

    return map;
}

Ответы (1 шт):

Автор решения: Дмитрий

Например, так :

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;

class Main {

    public static void main(String[] args) {        
        int removeSeasonNumber = 1;        
        Map<String, LocalDate> resul = removeBySeasonNumber(createMap(), removeSeasonNumber);
    }

    private static Map<String, LocalDate> removeBySeasonNumber(Map<String, LocalDate> dateMap, int removeSeasonNumber) {
        int endMonth = 12/4*removeSeasonNumber;
        Iterator<Map.Entry<String, LocalDate>> iterator = dateMap.entrySet().iterator();        
        while (iterator.hasNext()) {
            final Map.Entry<String, LocalDate> unit = iterator.next();
            int monthNumb = unit.getValue().getMonth().plus(1).getValue();
            if (monthNumb<=endMonth && monthNumb>endMonth-3) iterator.remove();
        }
        return dateMap;
    }

    private static Map<String, LocalDate> createMap() {
        DateTimeFormatter dateFormat = new DateTimeFormatterBuilder()
                .parseCaseInsensitive().appendPattern("MMM d yyyy").toFormatter(Locale.ENGLISH);
        Map<String, LocalDate> map = new HashMap<>();
        map.put("Сильвестр Сталлоне", LocalDate.parse("JUL 6 1946", dateFormat));
        map.put("Фиби Тонкин", LocalDate.parse("JUL 12 1989", dateFormat));
        map.put("Эдди Редмэйн", LocalDate.parse("JAN 6 1982", dateFormat));
        map.put("Кен Лоуч", LocalDate.parse("JUN 17 1936", dateFormat));
        map.put("Усэйн Болт", LocalDate.parse("AUG 21 1986", dateFormat));
        map.put("Том Мейган", LocalDate.parse("JAN 11 1981", dateFormat));
        map.put("Энди Гарсиа", LocalDate.parse("APR 12 1956", dateFormat));
        map.put("Лэнс Хенриксен", LocalDate.parse("MAY 5 1940", dateFormat));
        map.put("Эсекьель Гарай", LocalDate.parse("OCT 10 1986", dateFormat));
        map.put("Кэтрин Лэнгфорд", LocalDate.parse("APR 29 1996", dateFormat));
        return map;
    }

}
→ Ссылка