Добрый день!
Никак не уясню смысл жизни и суть происходящего с итераторами при работе с коллекциями HashMap. Смысл жизни подождет (ХС), а вот с итераторами хочу разобраться сразу. Начитка различных статей из инета до конца прояснить все вопросы не помогла. Хотя я понял, что такое итератор и для чего он нужен.
Вопрос следующий. Есть стандарный код:
заносится новый объект класса HashMap, хранящего данные структуры . Структура данных сотавляет два объекта типа String.
Это мне понятно. А вот аналогичный код с итерератором:
> заносится новый объект, являющийся результатом выполнения 1) метода entrySet() с переменной tempMap, 2) метода iterator() с результатом, полученным при выполнении п. 1.
Теперь "откровенные" вопросы к "старшим товарищам по партии":
1. Как правильно читать структуру данных > и как понимать эту ее часть Map.Entry? Это вызов какого-то метода класса Map? Хотя Map это интерфейс, а не класс. Что такое интерфейсы пока не разобрался.
2. Правильно ли я описал выполнение tempMap.entrySet().iterator(), включая последовательность действий?
3. Нахера Почему здесь присутсвует entrySet? В чем его роль?
С уважением,
Зеленая лягушка.
HashMap tempMap = new HashMap();
Если своими словами, то его суть в следующем:
В переменную tempMap класса HashMap, хранящего данные структуры Iterator> iterator = tempMap.entrySet().iterator();
Пытаюсь его описать для себя приведенным выше образом:
В переменную iterator класса Iterator, хранящего данные структуры
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
В переменную 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 или чего там еще)