necesidad aclaración a Oracle explicación tutorial de cuándo utilizar iterador vs para-cada constructo

Eliyahu Machluf:

En Oracle tutorial sobre colecciones https://docs.oracle.com/javase/tutorial/collections/interfaces/collection.html veo lo siguiente:

Use Iterator instead of the for-each construct when you need to:

1. Remove the current element. The for-each construct hides the iterator, so you cannot call remove. Therefore, the for-each construct is not usable for filtering.
2. Iterate over multiple collections in parallel.

Entiendo la primera opción 'eliminar elemento actual' que está soportado por iterador y no apoyada por para-cada constructo. Necesito una aclaración sobre la segunda opción 'iterar sobre colecciones múltiples en paralelo' que se pueden hacer con iterador y no por fines de cada uno. ¿Alguien puede suministrar un ejemplo de tal escenario? Por lo que yo entiendo la for-each también se pueden anidar, por lo que uno puede viajar en varias colecciones en paralelo.

Esto no es duplicado de iterador vs for-each y de iterador contra de lo que preguntan acerca de la comparación general de iterador y con fines de cada uno, y te pido por la condena específica en el tutorial de oráculo.

TJ Crowder:

Suponga que tiene dos colecciones:

List<A> listA = /*...*/;
List<B> listB = /*...*/;

... y lo que necesita para iterar a través de ellos en paralelo (es decir, procesar la primera entrada de cada uno, y luego procesar la entrada siguiente en cada una, etc.) No se puede hacer eso con el aumento de forbucle, que tendría que utilizar Iterators :

Iterator<A> itA = listA.iterator();
Iterator<B> itB = listB.iterator();
while (itA.hasNext() && itB.hasNext()) {
    A nextA = itA.next();
    B nextB = itB.next();
    // ...do something with them...
}

Para ser justos, se puede combinar un aumento de forbucle con un iterador:

Iterator<A> itA = listA.iterator();
for (B nextB : listB) {
    if (!itA.hasNext()) {
        break;
    }
    A nextA = itA.next();
    // ...do something with them...
}

... pero es torpe y claridad sufre, sólo una de las colecciones pueden ser objeto de la for, el resto tiene que ser Iterators.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=196834&siteId=1
Recomendado
Clasificación