Use la interfaz Iterator para recorrer los elementos de la colección
Los objetos Iterator se denominan iteradores (un tipo de patrón de diseño) y se utilizan principalmente para recorrer los elementos de la colección Collection .
GOF define el patrón de iterador como: proporcionar un método para acceder a cada elemento en un objeto contenedor sin exponer los detalles internos del objeto. El patrón iterador nace para los contenedores . Similar a "conductor en el autobús", "azafata en el tren", "azafata".
La interfaz Collection hereda la interfaz java.lang.Iterable , que tiene un método iterator() , por lo que el
Una clase de colección que implementa la interfaz Collection tiene un método iterator() que devuelve un objeto que implementa la interfaz Iterator .
Iterator solo se usa para recorrer colecciones , e Iterator en sí mismo no proporciona la capacidad de contener objetos. Si necesita crear un objeto Iterator , debe tener una colección iterada.
Cada vez que el objeto de colección llama al método iterator(), se obtiene un nuevo objeto de iterador y el cursor predeterminado está antes del primer elemento de la colección.
Métodos de la interfaz Iterator
Antes de llamar al método it.next(), se debe llamar a it.hasNext() para su detección. Si no se llama, y el siguiente registro no es válido, llamar a it.next() directamente generará NoSuchElementException.
La operación transversal de los elementos de la colección utiliza la interfaz Iterator del iterador.
método uno:
@Test
public void test1(){
Collection coll = new ArrayList();
coll.add(456);
coll.add(123);
coll.add(new Person("Jerry", 20));
coll.add(new String("Tom"));
coll.add(false);
Iterator iterator = coll.iterator();
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
}
El resultado de la operación es el siguiente:
Si agregamos otra oración: System.out.println(iterator.next());
El resultado de la operación es el siguiente:
Podemos ver que se reporta la excepción: NoSuchElementException
Método 2:
@Test
public void test1(){
Collection coll = new ArrayList();
coll.add(456);
coll.add(123);
coll.add(new Person("Jerry", 20));
coll.add(new String("Tom"));
coll.add(false);
Iterator iterator = coll.iterator();
//方式一:
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// //报异常:NoSuchElementException
// System.out.println(iterator.next());
//方法二:不推荐
for (int i = 0; i < coll.size(); i++) {
System.out.println(iterator.next());
}
}
resultado de la operación
Método tres:
public void test1(){
Collection coll = new ArrayList();
coll.add(456);
coll.add(123);
coll.add(new Person("Jerry", 20));
coll.add(new String("Tom"));
coll.add(false);
Iterator iterator = coll.iterator();
//方式一:
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// //报异常:NoSuchElementException
// System.out.println(iterator.next());
//方法二:不推荐
// for (int i = 0; i < coll.size(); i++) {
// System.out.println(iterator.next());
// }
//方式三:推荐
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
El resultado de la operación es el siguiente:
La operación transversal de los elementos de la colección utiliza la interfaz Iterator del iterador.
Métodos internos: hasNext() y next()
El principio de ejecución del iterador Iterator
¡gracias por ver! ! !