Разница между Iterator и Listiterator?



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

ListIterator listite = List.listIterator();


можно использовать Iterator обход Set или List или Map. Но ListIterator может использоваться только для обхода a List, он не может пересечь Set. Зачем?



Я знаю, что главное отличие заключается в том, что с итератором мы можем двигаться только в одном направлении, но с ListIterator мы можем путешествовать в обоих направлениях. Есть ли другие отличия? И никаких преимуществ ListIterator over Iterator?

804   5  

5 ответов:

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

вы можете

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

есть два отличия:

  1. мы можем использовать итератор для обхода набора и списка, а также отображения типа объектов. А ListIterator можно использовать для траверс для списка типов объектов, но не для типа объектов.

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

    С помощью итератора, мы можем извлекать элементы из объекта коллекции только в прямом направлении.

    методы в Итератор:

    1. hasNext()
    2. next()
    3. remove()
    Iterator iterator = Set.iterator();
    Iterator iterator = List.iterator();
  2. но мы получаем объект ListIterator только из интерфейса списка, см. здесь:

    , где в качестве ListIterator позволяет вам перемещаться в любом направлении (как вперед, так и назад). Таким образом, он имеет еще два метода, такие как hasPrevious() и previous() кроме тех из итератора. Кроме того, мы можем получить индексы следующих или предыдущих элементов (используя nextIndex() и previousIndex() соответственно )

    методы в ListIterator:

    1. hasNext()
    2. next ()
    3. предыдущей()
    4. hasPrevious()
    5. удалить()
    6. nextIndex()
    7. previousIndex()
    ListIterator listiterator = List.listIterator();

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

ссылка : - в чем разница между итератором и ListIterator ?

итератор-это супер класс ListIterator.

вот различия между ними:

  1. С iterator вы можете двигаться только вперед, но с ListIterator вы можете переместить backword также при чтении элементов.
  2. С ListIterator вы можете получить индекс в любой момент во время прохождения, что невозможно с iterator s.
  3. С iterator вы можете проверить только для следующего элемента доступны или нет, но в listiterator вы можете проверить предыдущие и следующие элементы.
  4. С listiterator вы можете добавить новый элемент в любой момент времени при прохождении. Невозможно с iterator.
  5. С 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.

Iterator И ListIterator Разница

  1. мы можем использовать итератор для обхода набора и списка, а также отображения типа объектов. Но итератор списка можно использовать для обхода объектов типа списка, но не для объектов типа набора.

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

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

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

ListIterator listite = List.listIterator();

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

  1. С помощью итератора, мы можем извлекать элементы из объекта коллекции только в прямом направлении.

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

Comments

    Ничего не найдено.