patron - recorrer iterator java
Diferencia entre Iterador y Lististador? (5)
Iterator es superclase de ListIterator.
Aquí están las diferencias entre ellos:
- Con el
iterator
puede avanzar solo, pero conListIterator
puede mover la palabra clave también mientras lee los elementos. - Con
ListIterator
puede obtener el índice en cualquier punto durante el desplazamiento, lo cual no es posible con lositerator
. - Con el
iterator
puede verificar solo para el próximo elemento disponible o no, pero en ellistiterator
puede verificar los elementos anteriores y siguientes. - Con
listiterator
puede agregar un nuevo elemento en cualquier punto del tiempo, mientras se desplaza. No es posible con eliterator
. - Con
listiterator
puede modificar un elemento al atravesarlo, lo cual no es posible con eliterator
.
Mirador de 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
}
Look and feel de 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
}
Iterator ite = Set.iterator();
Iterator ite = List.iterator();
ListIterator listite = List.listIterator();
Podemos usar Iterator
para recorrer un Set
o una List
o un Map
. Pero ListIterator
solo puede usarse para recorrer una List
, no puede atravesar un Set
. ¿Por qué?
Sé que la principal diferencia es que con el iterador podemos viajar en una sola dirección, pero con ListIterator
podemos viajar en ambas direcciones. ¿Hay otras diferencias? Y todas las ventajas de ListIterator
sobre ListIterator
?
Hay dos diferencias:
Podemos usar Iterator para recorrer Set y List y también Map type of Objects. Mientras que un ListIterator se puede utilizar para atravesar para objetos de tipo lista, pero no para Set-type of Objects.
Es decir, podemos obtener un objeto iterador usando Set y List, ver aquí:
Al usar Iterator, podemos recuperar los elementos del Objeto de Colección solo en la dirección de avance.
Métodos en iterador:
-
hasNext()
-
next()
-
remove()
Iterator iterator = Set.iterator(); Iterator iterator = List.iterator();
-
Pero obtenemos el objeto ListIterator solo desde la interfaz de la Lista, mira aquí:
donde como ListIterator le permite recorrer en cualquier dirección (tanto hacia adelante como hacia atrás). Entonces tiene dos métodos más como
hasPrevious()
yprevious()
distintos a los de Iterator. Además, podemos obtener índices de los elementos siguientes o anteriores (usandonextIndex()
ypreviousIndex()
respectivamente)Métodos en ListIterator:
- hasNext ()
- siguiente()
- anterior()
- hasPrevious ()
- retirar()
- nextIndex ()
- previousIndex ()
ListIterator listiterator = List.listIterator();
es decir, no podemos obtener el objeto ListIterator de la interfaz Set.
Referencia: - ¿Cuál es la diferencia entre Iterator y ListIterator?
Las diferencias se enumeran en el Javadoc para ListIterator
Usted puede
- iterar hacia atrás
- obtener el iterador en cualquier punto.
- agrega un nuevo valor en cualquier punto.
- establecer un nuevo valor en ese punto.
Las ventajas de ListIterator
sobre ListIterator
es que podemos agregar elementos en cualquier momento mientras recorremos una lista usando ListIterator.
Iterador y diferencia de ListIterator
- Podemos usar Iterator para recorrer Set y List y también Map type of Objects. Pero List Iterator se puede usar para recorrer objetos tipo List, pero no para Set type of Objects.
Es decir, podemos obtener un objeto Iterrator usando Set y List, ver aquí:
Iterator ite = Set.iterator();
Iterator ite = List.iterator();
Pero obtenemos el objeto List Iterator solo de la interfaz de la Lista, mira aquí:
ListIterator listite = List.listIterator();
es decir, no podemos obtener el objeto List Iterator de la interfaz Set.
Al usar Iterator, podemos recuperar los elementos del Objeto de Colección solo en la dirección de avance.
- donde como List Iterator, que le permite recorrer en cualquier dirección. Es decir los Iteradores de la lista atraviesan dos direcciones. Por lo tanto, tiene otro método tiene
hasPrevious()
yprevious()
distinto de iterador.
- donde como List Iterator, que le permite recorrer en cualquier dirección. Es decir los Iteradores de la lista atraviesan dos direcciones. Por lo tanto, tiene otro método tiene