Разница между Iterator и 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?

Ответ 1

Различия перечислены в Javadoc для ListIterator

Вы можете

  • итерация назад
  • получить итератор в любой точке.
  • добавить новое значение в любой момент.
  • установите новое значение в этой точке.

Ответ 2

Существуют два отличия:

  • Мы можем использовать 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:

    • hasNext()
    • Следующий()
    • предыдущей()
    • hasPrevious()
    • удалить()
    • NEXTINDEX()
    • previousIndex()
    ListIterator listiterator = List.listIterator();

    i.e, мы не можем получить объект ListIterator из интерфейса Set.

Ссылка: - В чем разница между Iterator и ListIterator?

Ответ 3

Итератор - это суперкласс 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
}

Ответ 4

Преимущества ListIterator over Iterator - мы можем добавить элемент в любой момент времени, перемещая список, используя ListIterator.

Ответ 5

Итератор и разница в ListIterator

  • Мы можем использовать Iterator для пересечения Set и List, а также типа карты объектов. Но List Iterator может использоваться для перемещения объектов типа List, но не для типа объектов Set.

То есть мы можем получить объект Iterrator с помощью Set и List, см. здесь:

Iterator ite = Set.iterator();
Iterator ite = List.iterator();

Но мы получаем объект List Iterator только из интерфейса List, см. здесь:

ListIterator listite = List.listIterator();

i.e, мы не можем получить объект List Iterator из Set interface.

  1. Используя Iterator, мы можем извлекать элементы из объекта Collection только в прямом направлении.

    • где как List Iterator, который позволяет вам перемещаться в обоих направлениях. Это список итераторов, пересекающих два направления. Таким образом, он имеет другие методы hasPrevious() и previous(), отличные от Iterator.