Interfaz iterador
1. Interfaz iterador
Itreable
Método integrado Iterator () Devuelve un iterador recién creado.
como:
interfaz pública iterable {iterator iterator (); } Iterator tiene dos métodos: HasNext () y Next () para implementar. interfaz pública iterator {boolean HasNext (); Artículo Next (); void eliminar (); // Implementación opcional}
2. Implementar la importación
import java.util.iterator;
Clases genéricas, implementar la interfaz ITerable implementa ITerable <emem>
Implementa el método Iterator () de Itererable, devolviendo cualquier tipo de iterador definido.
Definir el tipo de iterador implementa Iterator <emem>
Implementar hasNext (), next () y eliminar ()
3. Ejemplo:
Public Class Stack <Etem> Implementa ITerable <emem> {public Iterator <emitem> iterator () {return New ListIterator <emem> (primero); } Listiterator de clase privada <emem> implementa iterator <emem> {nodo privado <emem> actual; Public listIterator (nodo <emem> primero) {current = first; } public boolean HasNext () {return current! = null; } public void remove () {lanzar nueva UnpportedOperationException (); } artículo público next () {if (! Hasnext ()) tire nuevo nosuchelementException (); Artículo Artículo = Current.Item; actual = current.next; artículo de devolución; }}} 4. Métodos de llamadas
iteración de foreach
para (String S: Stack) System.out.println (s);
Si es un tipo básico como Int/Double, utilice la relación de conversión anterior
5. Traversal de bucle
Iterador i = stack.iterator (); while (i.hasnext ()) {String s = I.Next (); }Interfaz de enumeración
La enumeración es una clase de interfaz en java.util. En la enumeración, encapsula métodos para enumerar conjuntos de datos. Es similar al iterador. Se utiliza para atravesar elementos en la colección. Sin embargo, la enumeración de la enumeración solo proporciona la función de atravesar elementos de las colecciones de tipos de vectores y hashtables. Este tipo de objeto de colección obtiene un objeto de enumeración llamando al método Elements () y luego llama al siguiente método para atravesar elementos en la colección.
HaSmoreElements (): determina si todavía hay datos en el objeto de enumeración
nextElement (): Obtenga los próximos datos en el objeto de enumeración
Los ejemplos son los siguientes:
Enumeration req = request.getParamTernames (); while (req.hasmoreelements ()) {object obj = (object) req.nextelement (); if (obj.ToString (). Trim (). Equals ("LastPage")) {System.out.println ("LastPage /N"); } else if (obj.ToString (). Trim (). Equals ("NextPage")) {System.out.println ("NextPage"); }} La diferencia entre iterador y enumeración
En las colecciones de Java, generalmente atravesamos la colección a través de "iterador" o "clase de enumeración". Hoy, aprendamos sobre las diferencias entre ellos juntos.
Primero veamos los códigos fuente de enumeración.java y iterator.java, y luego hablemos sobre sus diferencias.
La enumeración es una interfaz, y su código fuente es el siguiente:
paquete java.util; enumeración de interfaz pública <E> {boolean HasmoreElements (); E nextElement ();} Iterator también es una interfaz, y su código fuente es el siguiente:
paquete java.util; iterador de interfaz pública <E> {boolean Hasnext (); E Next (); vacío eliminar ();} Después de leer el código, hablemos de la diferencia entre ellos.
(01) Diferentes interfaces de funciones
La enumeración tiene solo 2 interfaces de función. A través de la enumeración, solo podemos leer los datos de la colección, pero no podemos modificar los datos.
El iterador tiene solo 3 interfaces de función. Además de leer los datos de la colección, Iterator también puede eliminar los datos.
(02) El iterador admite el mecanismo de falla, pero la enumeración no.
La enumeración es una interfaz agregada por JDK 1.0. Las funciones utilizadas incluyen vector, hashtable y otras clases, que se agregan en JDK 1.0. El propósito de la enumeración es proporcionarles una interfaz transversal. La enumeración en sí no admite la sincronización, pero cuando se agrega la enumeración de vector y hashtable, se agrega la sincronización.
Iterator es una interfaz agregada solo en JDK 1.2. También proporciona interfaces transversales para colecciones como HASHMAP y ArrayList. Iterator admite el mecanismo de Fail-Fast: cuando múltiples subprocesos funcionan en el contenido de la misma colección, se puede generar un evento de fallas.