Разница между 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?
5 ответов:
различия перечислены в Javadoc для ListIterator
вы можете
- итерации назад
- получить итератор в любой момент.
- добавить новое значение в любой точке.
- установите новое значение в этой точке.
есть два отличия:
мы можем использовать итератор для обхода набора и списка, а также отображения типа объектов. А ListIterator можно использовать для траверс для списка типов объектов, но не для типа объектов.
то есть, мы можем получить объект итератора с помощью Set и List, см. здесь:
С помощью итератора, мы можем извлекать элементы из объекта коллекции только в прямом направлении.
методы в Итератор:
hasNext()next()remove()Iterator iterator = Set.iterator(); Iterator iterator = List.iterator();но мы получаем объект ListIterator только из интерфейса списка, см. здесь:
, где в качестве ListIterator позволяет вам перемещаться в любом направлении (как вперед, так и назад). Таким образом, он имеет еще два метода, такие как
hasPrevious()иprevious()кроме тех из итератора. Кроме того, мы можем получить индексы следующих или предыдущих элементов (используяnextIndex()иpreviousIndex()соответственно )методы в ListIterator:
- hasNext()
- next ()
- предыдущей()
- hasPrevious()
- удалить()
- nextIndex()
- previousIndex()
ListIterator listiterator = List.listIterator();т. е. мы не можем получить объект ListIterator из интерфейса Set.
итератор-это супер класс ListIterator.
вот различия между ними:
- С
iteratorвы можете двигаться только вперед, но сListIteratorвы можете переместить backword также при чтении элементов.- С
ListIteratorвы можете получить индекс в любой момент во время прохождения, что невозможно сiterators.- С
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 }
преимущества
ListIteratoroverIteratorу нас можете добавить элемент в любой момент времени при обходе список с помощью ListIterator.
Iterator И ListIterator Разница
- мы можем использовать итератор для обхода набора и списка, а также отображения типа объектов. Но итератор списка можно использовать для обхода объектов типа списка, но не для объектов типа набора.
то есть, мы можем получить объект итератора с помощью Set и List, см. здесь:
Iterator ite = Set.iterator(); Iterator ite = List.iterator();но мы получаем объект итератора списка только из интерфейса списка, см. здесь:
ListIterator listite = List.listIterator();т. е., мы не удается получить объект итератора списка из интерфейса Set.
С помощью итератора, мы можем извлекать элементы из объекта коллекции только в прямом направлении.
- где как итератор списка, который позволяет вам перемещаться в любом направлении. То есть итераторы списка пересекают два направления. Так что у него есть другие методы
hasPrevious()&previous()кроме итератора.
Comments