public static void removeAllSummerPeople(Map<String, Date> map) {
Calendar cal = Calendar.getInstance();
Iterator<Map.Entry<String, Date>> itr = map.entrySet().iterator();
while(itr.hasNext()) {
Map.Entry<String, Date> pair = itr.next();
Date date = pair.getValue();
cal.setTime(date);
int m = cal.get(Calendar.MONTH);
if(m == 5 || m == 6 || m == 7 ) {
itr.remove();
}
}
Ilia Arustamov
10 уровень
Решил методом ковыряния в комментах, но не понимаю, что там вообще происходит в задаче. Пожалуйста, может ли кто-нибудь объяснить на пальцах?((
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Игорь Backend Developer
14 мая 2020, 07:35
1) Calendar cal = Calendar.getInstance(); получаешь объект Calendar (класс такой есть в пакете java.util для работы с датой)
2) Iterator<Map.Entry<String, Date>> itr = map.entrySet().iterator(); - получаешь объект Iterator из EntrySet, который возвращает множество пар ключ-значение. таким образом можно перебирать Map
3) while(itr.hasNext()) { - проверяешь, может ли итератор получить следующее значение из EntrySet
4) Map.Entry<String, Date> pair = itr.next(); - итератор получает следующее значение из EntrySet и кладет его в Map.Entry<String, Date> pair , таким образом мы получаем одну пару ключ-значение
5) Date date = pair.getValue(); - из пары ключ значение которая состоит <ключ - String, значение - Date> методом getValue() получаем значение Date и кладем его в переменную Date date
6) cal.setTime(date); - выставляем в календаре дату полученную из map
7) int m = cal.get(Calendar.MONTH); - получаем из календаря месяц нашей даты, которую мы в него засунули строкой выше
8) if(m == 5 || m == 6 || m == 7 ) { - если этот месяц летний
itr.remove(); - удаляем пару ключ-значение из Map , то есть удаляем полученный Map.Entry<String, Date> описанный тут в 4ом пункте
}
+5