Предположим, у вас есть две коллекции:
List<A> listA = /*...*/;
List<B> listB = /*...*/;
... и вам нужно проходить через них параллельно (то есть обрабатывать первую запись в каждой, затем обрабатывать следующую запись в каждой и т. Д.) Это невозможно сделать с помощью расширенного цикла for
, вы бы использовали Iterator
s:
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...
}
Если честно, вы можете объединить расширенный цикл for
с итератором:
Iterator<A> itA = listA.iterator();
for (B nextB : listB) {
if (!itA.hasNext()) {
break;
}
A nextA = itA.next();
// ...do something with them...
}
... но это неуклюже и страдает ясность, предметом for
может быть только одна из коллекций, остальные должны быть Iterator
s.