JavaRush/Java блог/Архив info.javarush/Вопрос по итераторам на примере HashMap
GreenFrog
22 уровень

Вопрос по итераторам на примере HashMap

Статья из группы Архив info.javarush
участников
Добрый день! Никак не уясню смысл жизни и суть происходящего с итераторами при работе с коллекциями HashMap. Смысл жизни подождет (ХС), а вот с итераторами хочу разобраться сразу. Начитка различных статей из инета до конца прояснить все вопросы не помогла. Хотя я понял, что такое итератор и для чего он нужен. Вопрос следующий. Есть стандарный код: HashMap tempMap = new HashMap(); Если своими словами, то его суть в следующем: В переменную tempMap класса HashMap, хранящего данные структуры заносится новый объект класса HashMap, хранящего данные структуры . Структура данных сотавляет два объекта типа String. Это мне понятно. А вот аналогичный код с итерератором: Iterator> iterator = tempMap.entrySet().iterator(); Пытаюсь его описать для себя приведенным выше образом: В переменную iterator класса Iterator, хранящего данные структуры > заносится новый объект, являющийся результатом выполнения 1) метода entrySet() с переменной tempMap, 2) метода iterator() с результатом, полученным при выполнении п. 1. Теперь "откровенные" вопросы к "старшим товарищам по партии": 1. Как правильно читать структуру данных > и как понимать эту ее часть Map.Entry? Это вызов какого-то метода класса Map? Хотя Map это интерфейс, а не класс. Что такое интерфейсы пока не разобрался. 2. Правильно ли я описал выполнение tempMap.entrySet().iterator(), включая последовательность действий? 3. Нахера Почему здесь присутсвует entrySet? В чем его роль? С уважением, Зеленая лягушка.
Комментарии (1)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Archie369
Уровень 18
26 января 2017, 20:08
Вот тут у вас какая-то каша
В переменную iterator класса Iterator, хранящего данные структуры <Map.Entry<String, String>> заносится новый объект, являющийся результатом выполнения 1) метода entrySet() с переменной tempMap, 2) метода iterator() с результатом, полученным при выполнении п. 1.

разберитесь с понятием переменные, объекты, классы, интерфейсы вам пока не нужны.
Если вкратце, итератор — это такая штука, позволяющая получить из «многосоставного» элемента, в вашем случае Map один элемент за одну ИТЕРАцию, отсюда и название. Тоесть одно обращение к итератору — один объект получаем. Для Map чуть сложнее, объект это связка ключ-значение. но не суть.
Итератором пользуются тогда, когда элемент нужно удалить по его адресу, и итератор позволяет это делать, проще, чем если бы удаляли элемент в цикле for (массив элементов в этом случае «поедет», потому что изменится его длина".
Используется итератор примерно так:
1. получаем итератор объекта, например итератор Map
2. в условии цикла While проверяем условие iterator.hasNext(), т.е. выполняем цикл пока есть след элементы
3. внутри цикла через итератор и его метод .next() получаем очередную запись из объекта (считай, элемент внутри List или Map или Set или чего там еще)