Gymterview
junior

Какие существуют способы перебирать элементы списка

Существуют четыре основных способа перебора элементов List.

Цикл for-each (рекомендуемый):

Пример
for (String element : list) {
    // element
}

Итератор:

Пример
Iterator<String> it = list.iterator();
while (it.hasNext()) {
    String s = it.next();
}

Индексный цикл for (только для RandomAccess-списков):

Пример
for (int i = 0; i < list.size(); i++) {
    list.get(i);
}

forEach с лямбдой (Java 8+):

Пример
list.forEach(element -> System.out.println(element));

Индексный цикл эффективен для ArrayList (RandomAccess), но для LinkedList приведет к O(N^2), т.к. каждый get(i) — это O(N). Для LinkedList следует использовать итератор или for-each.

На собеседовании: перечислите все четыре способа. Обязательно упомяните, что индексный цикл опасен для LinkedList (O(N^2) vs O(N) у итератора).