Ответ 1
Различия перечислены в Javadoc для ListIterator
Вы можете
- итерация назад
- получить итератор в любой точке.
- добавить новое значение в любой момент.
- установите новое значение в этой точке.
Iterator ite = Set.iterator();
Iterator ite = List.iterator();
ListIterator listite = List.listIterator();
Мы можем использовать Iterator
для перемещения по Set
или List
или Map
. Но ListIterator
может использоваться только для перемещения по List
, он не может пересечь a Set
. Почему?
Я знаю, что основное отличие состоит в том, что с итератором мы можем двигаться только в одном направлении, но с ListIterator
мы можем перемещаться в обоих направлениях. Есть ли другие отличия? И любые преимущества ListIterator
over Iterator
?
Различия перечислены в Javadoc для ListIterator
Вы можете
Существуют два отличия:
Мы можем использовать Iterator для пересечения Set и List, а также типа карты объектов. Хотя ListIterator может использоваться для перемещения объектов типа List, но не для объектов типа Set.
То есть мы можем получить объект Iterator с помощью Set и List, см. здесь:
Используя Iterator, мы можем извлекать элементы из объекта Collection только в прямом направлении.
Методы в Iterator:
hasNext()
next()
remove()
Iterator iterator = Set.iterator();
Iterator iterator = List.iterator();
Но мы получаем объект ListIterator только из интерфейса List, см. здесь:
где в качестве ListIterator вы можете перемещаться в обоих направлениях (как вперед, так и назад). Таким образом, у него есть еще два метода, например hasPrevious()
и previous()
, отличный от Iterator. Кроме того, мы можем получить индексы следующих или предыдущих элементов (используя nextIndex()
и previousIndex()
соответственно)
Методы в ListIterator:
ListIterator listiterator = List.listIterator();
i.e, мы не можем получить объект ListIterator из интерфейса Set.
Итератор - это суперкласс 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
}
Преимущества ListIterator
over Iterator
- мы можем добавить элемент в любой момент времени, перемещая список, используя ListIterator.
Итератор и разница в ListIterator
То есть мы можем получить объект Iterrator с помощью Set и List, см. здесь:
Iterator ite = Set.iterator();
Iterator ite = List.iterator();
Но мы получаем объект List Iterator только из интерфейса List, см. здесь:
ListIterator listite = List.listIterator();
i.e, мы не можем получить объект List Iterator из Set interface.
Используя Iterator, мы можем извлекать элементы из объекта Collection только в прямом направлении.
hasPrevious()
и previous()
, отличные от Iterator.