Iterator ite = Set.iterator();
Iterator ite = List.iterator();
ListIterator listite = List.listIterator();
Мы можем использовать, Iterator
чтобы пройти через Set
a, a List
или a Map
. Но ListIterator
может использоваться только для прохождения List
, а не для прохождения Set
. Зачем?
Я знаю, что основное отличие состоит в том, что с итератором мы можем двигаться только в одном направлении, а с ListIterator
помощью - в обоих направлениях. Есть еще отличия? И какие преимущества ListIterator
перед Iterator
?
Ответы:
Различия перечислены в документации Javadoc для ListIterator.
Вы можете
источник
Set
, проста: нет «текущей точки»: у элементов нет индекса, и нет удобного способа добавить элемент «до» или «после» другого.Есть два отличия:
Мы можем использовать Iterator для обхода Set и List, а также объектов типа Map. В то время как ListIterator может использоваться для обхода объектов типа списка, но не для объектов типа набора.
То есть мы можем получить объект Iterator с помощью Set и List, см. Здесь:
Используя Iterator, мы можем извлекать элементы из объекта коллекции только в прямом направлении.
Методы в итераторе:
hasNext()
next()
remove()
Но мы получаем объект ListIterator только из интерфейса List, см. Здесь:
где ListIterator позволяет перемещаться в любом направлении (как вперед, так и назад). Так что есть два метода , как
hasPrevious()
иprevious()
другие , чем у итератора. Также мы можем получить индексы следующего или предыдущего элемента (используяnextIndex()
иpreviousIndex()
соответственно)Методы в ListIterator:
т.е. мы не можем получить объект ListIterator из интерфейса Set.
Ссылка: - В чем разница между Iterator и ListIterator?
источник
Вот различия между ними:
iterator
вы можете двигаться только вперед, но с помощьюListIterator
вы можете перемещаться назад во время чтения элементов.ListIterator
вы можете получить индекс в любой момент во время обхода, что невозможно сiterator
s.iterator
вы можете проверить только следующий доступный элемент или нет, ноlistiterator
вы можете проверить предыдущий и следующий элементы.listiterator
его помощью вы можете добавить новый элемент в любой момент во время перемещения. Невозможно сiterator
.listiterator
вы можете изменять элемент при перемещении, что невозможно сiterator
.Внешний вид итератора:
public interface Iterator<E> { boolean hasNext(); E next(); void remove(); //optional-->use only once with next(), dont use it when u use for:each }
ListIterator внешний вид:
public interface ListIterator<E> extends Iterator<E> { boolean hasNext(); E next(); boolean hasPrevious(); E previous(); int nextIndex(); int previousIndex(); void remove(); //optional void set(E e); //optional void add(E e); //optional }
источник