Надо удалить из словаря всех людей, родившихся летом. попытался через contains() не принимает
public static void main(String[] args) throws ParseException{
DateFormat df = new SimpleDateFormat ("MMMMM d yyyy", Locale.ENGLISH);
HashMap<String, Date> map = new HashMap<String, Date> ();
map.put ("Stallone", df.parse ("JUNE 1 1980"));
//напишите тут ваш код
map.put ("Stallone1", df.parse ("JULY 1 1981"));
map.put ("Stallone2", df.parse ("AUGUST 1 1982"));
map.put ("Stallone3", df.parse ("SEPTEMBER 1 1983"));
map.put ("Stallone4", df.parse ("OCTOBER 1 1984"));
map.put ("Stallone5", df.parse ("NOVEMBER 1 1985"));
map.put ("Stallone6", df.parse ("AUGUST 1 1986"));
map.put ("Stallone7", df.parse ("JUNE 1 1987"));
map.put ("Stallone8", df.parse ("JUNE 1 1988"));
map.put ("Stallone9", df.parse ("JUNE 1 1989"));
for (HashMap.Entry<String, Date> pair : map.entrySet ()) {
String key = pair.getKey ();
Date value = pair.getValue ();
}
}
Например, вы можете пройтись по словарю, проверить его значение (дата) и сохранить нужные ключи.
После, имея нужные ключи удалить их из словаря.
Пример:
...
List<String> removeKeys = new ArrayList<>();
for (HashMap.Entry<String, Date> pair : map.entrySet()) {
String key = pair.getKey();
Date value = pair.getValue();
// Код для получения месяца
Calendar cal = Calendar.getInstance();
cal.setTime(value);
int month = cal.get(Calendar.MONTH);
// Включает в себя июнь, июль и август
if (month >= 5 && month <= 7) {
removeKeys.add(key);
}
}
// Удаление из словаря
map.keySet().removeAll(removeKeys);
System.out.println(map);
// {Stallone4=Mon Oct 01 00:00:00 YEKT 1984, Stallone5=Fri Nov 01 00:00:00 YEKT 1985, Stallone3=Thu Sep 01 00:00:00 YEKST 1983}
Еще можно решить это без дополнительных коллекций и переборов, используя итератор:
Iterator<String> it = map.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
Date value = map.get(key);
// Код для получения месяца
Calendar cal = Calendar.getInstance();
cal.setTime(value);
int month = cal.get(Calendar.MONTH);
// Включает в себя июнь, июль и август
if (month >= 5 && month <= 7) {
it.remove();
}
}
map.entrySet().removeIf(pair -> {
int monthValue = pair.getValue().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().getMonthValue();
return monthValue >= 6 && monthValue <= 8;
});
Но я бы все таки изначально не использовал устаревшие классы Date
или Calendar
Виртуальный выделенный сервер (VDS) становится отличным выбором
ищу способ как в java по заданой формуле, например sin(x) построить графикПример: