Нет, for-each
Цикл не отслеживает индекс. Вы можете использовать обычную индексированную петлю, или сделать что-то вроде этого:
int idx = 0;
for (Object o : list) {
...
idx++;
}
Это рискованно, так как break
/continue
сделает idx
выходит из синхронизации, так что используйте это нечасто, и только тогда, когда тело просто и всего несколько строк.
Если элементы разные, то List.indexOf
также будет работать, хотя и в O(N)
, и в этот момент вы можете рассмотреть Set
(неупорядоченный, но гарантированный отбор).
Следует также сказать, что иногда использование listIterator()
также устраняет необходимость явного индекса в то время как итерация.
A ListIterator
опоры add
, set
и remove
операции.
Это еще одно явное преимущество. List
имеет над массивами до тех пор, пока идет итерационный механизм.
Вы ответили на него. –