Здравствуйте, подскажите, пожалуйста, вот у нас есть способ описания цикла для мапы через while и итераторы:
Iterator<Map.Entry<String, Date>> iterator = map.entrySet().iterator();
   while (iterator.hasNext())
    {
        //получение «пары» элементов
        Map.Entry<String, Date> pair = iterator.next();
        String key = pair.getKey();
        Date value = pair.getValue();
Вопросы такие: 1) Можете, пожалуйста, чуть подробнее пояснить про iterator.hasNext() -- Я понимаю что оно проверяет есть ли в мапе следующий элемент или нет, но какое у него первоначальное значение(ссылка на первый элемент)? 2) После выхода из цикла что будет храниться в итераторе(ссылка на последний элемент мапы?)? 3) Если я хочу опять пройтись циклом по всем значениям мапы, мне нужно создавать новый итератор, либо старый итератор можно опять присвоить к первому элементу как-то? 4) Можно ли удалять элементы мапы внутри цикла for each или же только через итераторное представление? 5) Если я хочу сделать цикл внутри цикла, проходящий по элементам одной мапы(как для сортировок, например) Мне нужно будет создать два итератора? Возможно я немного криво сформулировал свои вопросы,извините, заранее, большое вам спасибо за ответы и помощь!