Был код по задаче Добрая Зинаида и летние каникулы: package com.example.helloworld; import java.io.*; import java.util.*; import java.text.*; public class HelloWorld { public static HashMap<String, Date> createMap() throws ParseException { SimpleDateFormat 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("Vlad", df.parse("JUNE 1 2980")); map.put("Kola", df.parse("MARCH 1 1980")); map.put("Vasa", df.parse("OCTOBER 1 1980")); map.put("Peta", df.parse("JULY 1 1980")); map.put("Eva", df.parse("AUGUST 1 1980")); map.put("Adam", df.parse("SEPTEMBER 1 1980")); map.put("Iisus", df.parse("MAY 1 1980")); map.put("Satana", df.parse("FEBRUARY 1 1980")); map.put("Jopqa", df.parse("JANUARY 1 1980")); return map; } public static void removeAllSummerPeople(HashMap<String, Date> map) { SimpleDateFormat df = new SimpleDateFormat("MM", Locale.ENGLISH); try { for (Map.Entry<String, Date> pair : createMap().entrySet()) { int a = map.get(pair.getKey()).getMonth(); if (a>4&&a<8) { map.remove(pair.getKey()); } } } catch (ParseException t) { } } public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat("MM", Locale.ENGLISH); try { HashMap<String, Date> map = createMap(); removeAllSummerPeople(map); for (Map.Entry<String, Date> pair : map.entrySet()) { System.out.println(pair.getKey()+""+pair.getValue()); } } catch (ParseException t) { } } } и не проъодтло условие Метод removeAllSummerPeople() должен удалять из словаря всех людей, родившихся летом. Сменил на код : package com.javarush.task.task08.task0816; import java.io.*; import java.util.*; import java.text.*; /* Добрая Зинаида и летние каникулы */ public class Solution { public static HashMap<String, Date> createMap() throws ParseException { SimpleDateFormat 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("Vlad", df.parse("JUNE 1 2980")); map.put("Kola", df.parse("MARCH 1 1980")); map.put("Vasa", df.parse("OCTOBER 1 1980")); map.put("Peta", df.parse("JULY 1 1980")); map.put("Eva", df.parse("AUGUST 1 1980")); map.put("Adam", df.parse("SEPTEMBER 1 1980")); map.put("Iisus", df.parse("MAY 1 1980")); map.put("Satana", df.parse("FEBRUARY 1 1980")); map.put("Jopqa", df.parse("JANUARY 1 1980")); return map; } public static void removeAllSummerPeople(HashMap<String, Date> map) { SimpleDateFormat df = new SimpleDateFormat("MM", Locale.ENGLISH); Iterator <Map.Entry <String , Date>> iterator = map.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry<String,Date> a = iterator.next(); if (a.getValue().getMonth()>4 && a.getValue().getMonth()<8){ iterator.remove(); } } } public static void main(String[] args) { } } и заработало, то есть фактически сменил часть цикла с помощью итератора а не укороченой версии и удалял не map.rebove а iterator.remove. Так вот, в чем разница между map.rebove и iterator.remove?