ArrayList - это фактическая структура данных, реализация интерфейса List. Итератор - это просто интерфейс, который позволяет вам перемещаться по любой структуре данных (при условии, что для этой структуры данных доступен итератор).
Другими словами, ArrayList - это фактический список ссылок на объекты (или примитивы), которые физически хранятся в массиве. ArrayList является «реализацией» интерфейса List, то есть он предоставляет реализации всех методов, которые применимы к List, таких как add (объект), remove (объект), get (индекс) и т. Д.
Итератор - это более общий способ навигации по любой структуре данных, будь то множество, список или что-то еще. Одним из важных моментов является то, что он позволяет вам перемещаться по каждому элементу в структуре данных один раз, и тогда все готово. Из документации видно, что Iterator предписывает два метода, next () и hasNext (). next возвращает следующий элемент в базовой структуре данных, а hasNext позволяет узнать, существует ли хотя бы следующий элемент в базовой структуре данных. Несколько структур данных, включая ArrayList, могут предоставить вам итератор.
Почему я бы использовал итератор вместо методов get () Arraylist?
Что ж, как и многие интерфейсы, Iterator позволяет вам делать одно и то же, независимо от базовой реализации. Если я хочу «перебрать» некоторую структуру данных, я могу либо
a) написать код, специально предназначенный для структуры данных (такой как ArrayList), который мне придется изменить позже, если я изменю структуру данных на что-то другое (например, HashSet) или
b) получить Итератор из структуры данных и использовать тот же метод hasNext / next, который будет работать, даже если я изменю структуру данных на что-то другое.
К вашему сведению, если вы не слишком знакомы со словами «интерфейс» и «реализация», вам, вероятно, следует выполнить поиск в Google по «интерфейсу Java».