Easyiterator
Что такое Iterator и Iterable?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Iterable<T> — объект, который можно итерировать (в for-each): содержит Iterator<T> iterator(). Iterator<T> — hasNext(), next(), опционально remove().
// for-each компилируется в iterator().hasNext()/next()
for (String s : list) { System.out.println(s); }
// Iterator.remove() — единственный безопасный remove во время итерации
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String s = it.next();
if (s.isEmpty()) it.remove();
}ListIteratorextends Iterator —hasPrevious,previous,set,add(для List);- ConcurrentModificationException — если коллекция изменена во время итерации (fail-fast);
Iterable.forEach(consumer)(Java 8) — internal iteration;Spliterator— для параллельной итерации (используется в Stream).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.