Easyiterator
Что такое Iterator pattern?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Iterator — последовательный доступ к элементам коллекции без раскрытия её внутреннего представления.
// Iterable<T> — используется в for-each
for (String item : list) { /* ... */ }
// компилируется в:
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String item = it.next();
if (item.isEmpty()) it.remove(); // safe removal во время итерации
}
// Custom Iterable — например, Range
class Range implements Iterable<Integer> {
private final int from, to;
public Iterator<Integer> iterator() { /* ... */ }
}ListIterator— bidirectional (previous/hasPrevious/add/set);ConcurrentModificationException— если изменять коллекцию не черезiterator.remove();Spliterator— для parallel iteration (Stream API);- Подходит для lazy evaluation (бесконечные последовательности).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.