Пол дня сегодня сидел над этой задачей, в голове кашица. Вроде бы(!) добился чтобы метод срезал всех летних(по крайней мере через main - получалось верно.
Однако те же действия втыкая в метод - не производят ничего. Сил нет больше разбираться, поможите люди добрые! Подскажите где я на косяпорил,
package com.javarush.task.task08.task0816;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Month;
import java.util.*;
/* Создать словарь (Map<String, Date>) и занести в него десять записей по принципу:
"фамилия" - "дата рождения".
Удалить из словаря всех людей, родившихся летом.
Требования:
1. Программа не должна выводить текст на экран.
2. Программа не должна считывать значения с клавиатуры.
3. Метод createMap() должен создавать и возвращать словарь HashMap с типом элементов String, Date состоящий из 10 записей.
4. Метод removeAllSummerPeople() должен удалять из словаря всех людей, родившихся летом.*/
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("Stallone", df.parse("APRIL 1 1989"));
map.put("Vasiliy", df.parse("OCTOBER 1 1982"));
map.put("Arnold", df.parse("SEPTEMBER 1 1980"));
map.put("Mikelandgelo", df.parse("FEBRUARY 1 1980"));
map.put("Leonardo", df.parse("JUNE 1 1980"));
map.put("Rafael", df.parse("JULY 1 1980"));
map.put("Donatello", df.parse("JANUARY 1 1980"));
map.put("VanDam", df.parse("NOVEMBER 1 1980"));
map.put("Lungren", df.parse("JUNE 1 1980"));
map.put("JeckyChan", df.parse("AUGUST 1 1980"));
// for (Map.Entry<String, Date> pair : map.entrySet())
// {
// String key = pair.getKey(); //ключ
// System.out.println(key);
// }
return map;
}
public static void removeAllSummerPeople(HashMap<String, Date> map) {
List<Date> lDate = new ArrayList<Date>(map.values());/*crate list and put values from map there*/
for (int i = 0; i < lDate.size(); i++) {/* delete summer date from list*/
if (lDate.get(i).getMonth() >= 5 && lDate.get(i).getMonth() <= 7) {
lDate.remove(i);
}
}
HashMap<String, Date> fint = new HashMap<>();/* get keys and values in new test map(called pair)*/
for (Map.Entry<String, Date> pair : map.entrySet()) {
Date date = pair.getValue();
String key = pair.getKey();
for (int i = 0; i < lDate.size(); i++) { /* compare */
if (pair.getValue().equals(lDate.get(i))) {
fint.put(pair.getKey(), lDate.get(i));
}
}
}
for (Map.Entry<String, Date> pair2 : fint.entrySet()) {
Date date = pair2.getValue();
String key = pair2.getKey();
// System.out.println(key+" - "+date);
}
map=fint;
// System.out.println(" ");
}
public static void main(String[] args) throws ParseException {
HashMap<String ,Date> gj = createMap();
removeAllSummerPeople(gj);
for (Map.Entry<String, Date> pair2 : gj.entrySet()) {
Date date = pair2.getValue();
String key = pair2.getKey();
// System.out.println(key+" - "+date);
}
}
}