Добрая Зинаида и летние каникулы

Создать словарь (Map<string, date="">) и занести в него десять записей по принципу: «фамилия» — «дата рождения».

Удалить из словаря всех людей, родившихся летом.

Требования:

1. Программа не должна выводить текст на экран.

2. Программа не должна считывать значения с клавиатуры.

3. Класс Solution должен содержать только три метода.

4. Метод createMap() должен создавать и возвращать словарь HashMap с типом элементов String, Date состоящий из 10 записей.

5. Метод removeAllSummerPeople() должен удалять из словаря всех людей, родившихся летом.

package com.javarush.task.task08.task0816;

import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Map;

/ Добрая Зинаида и летние каникулы /

public class Solution { public static HashMap<string, date=""> createMap() { HashMap<string, date=""> map = new HashMap<string, date="">(); map.put("1", new Date("JUNE 1 1980")); map.put("2", new Date("JUNE 1 1980")); map.put("3", new Date("JUNE 1 1980")); map.put("4", new Date("JUNE 1 1980")); map.put("5", new Date("JUNE 1 1980")); map.put("6", new Date("JUNE 1 1980")); map.put("7", new Date("JUNE 1 1980")); map.put("8", new Date("JUNE 1 1980")); map.put("9", new Date("JUNE 1 1980")); map.put("10", new Date("JUNE 1 1980"));

    return map;
}

public static void removeAllSummerPeople(HashMap<String, Date> map) {
    ArrayList <String> removelist = new ArrayList<>();
    for (Map.Entry<String, Date> pair: map.entrySet()){
        Date date = pair.getValue();
        int m = date.getMonth();
        if (m>5 && m<9) {
            removelist.add(pair.getKey());
        }
        }
        for (String key: removelist){
            map.remove(key);
        }
}

public static void main(String[] args) {

}

}

Прошу объяснить, что я делаю не так, и как необходимо

задан 02 Апр '17, 08:31

Artem_Burov's gravatar image

Artem_Burov
445
одобрено: 40%


месяца начинаются с 0-Январь 1-февраль

ссылка

опубликован 02 Апр '17, 08:47

vampirit's gravatar image

vampirit
9.8k19
одобрено: 34%

Спасибо! Я уже голову сломал, почему оно не работает...

(02 Апр '17, 08:49) Artem_Burov

Ребят, почему не работает такое решение?

    public static void removeAllSummerPeople1(HashMap<String, Date> map) {
    for (Map.Entry<String, Date> pair : map.entrySet()) {
        if (pair.getValue().getMonth() >= 5 && pair.getValue().getMonth() <= 7) {
            map.remove(pair.getKey());
        }
    }
}

падает с ошибкой java.util.ConcurrentModificationException

ссылка

опубликован 28 Янв, 10:18

iqor's gravatar image

iqor
111
одобрено: 0%

Ваш ответ
включить просмотр

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×3,809

Задан: 02 Апр '17, 08:31

Просмотров: 1,186 раз

Отредактирован: 28 Янв, 10:18