Ответ
Итератор — это объект, который позволяет последовательно обходить элементы коллекции без раскрытия её внутренней структуры. В Kotlin он реализуется через интерфейс Iterator с методами:
hasNext(): проверяет наличие следующего элементаnext(): возвращает следующий элемент
Пример:
val list = listOf("A", "B", "C")
val iterator = list.iterator()
while (iterator.hasNext()) {
println(iterator.next()) // A, B, C
}
Особенности:
- Поддерживается для всех стандартных коллекций (List, Set, Map)
- Позволяет удалять элементы во время итерации через
remove()(только для mutable коллекций) - В Kotlin чаще используют синтаксис
for-in, который неявно использует итератор
Ответ 18+ 🔞
А, итератор! Ну это ж классика, ёпта. Представь себе, что у тебя есть мешок с картошкой, и ты хочешь её перебрать, но не вываливать всю на пол сразу. Вот итератор — это такой хитрожопый способ засовывать руку в мешок и доставать по одной картофелине, пока они не кончатся. Не надо знать, как там внутри всё устроено — просто тяни следующую.
Вот смотри, в Котлине это типа объект, который умеет делать две вещи: сказать, есть ли ещё что в коллекции (hasNext()), и выдать тебе следующий элемент (next()). Всё, больше от него нихуя не нужно.
Допустим, у тебя список букв. Вместо того чтобы лезть в него по индексам и рисковать выстрелить себе в ногу, ты заводишь итератор и гоняешь по нему.
val list = listOf("A", "B", "C")
val iterator = list.iterator()
while (iterator.hasNext()) {
println(iterator.next()) // A, B, C
}
Вот и всё, блядь. Просто и элегантно. И самое главное — он работает со всеми стандартными коллекциями: листами, сетами, даже мапами (там, правда, своя специфика, но суть та же).
Ещё одна фишка — если коллекция изменяемая, то через итератор можно удалять элементы прямо во время обхода методом remove(). Удобно, когда нужно выкинуть какую-нибудь хрень на лету, не устраивая цирк с индексами.
Но честно говоря, в Котлине редко кто пишет этот while вручную. Все нормальные люди используют цикл for-in, который под капотом сам всё делает — создаёт итератор и бегает по нему. Это ж, блядь, сахар синтаксический, чтобы жизнь мёдом не казалась. Так что запомни суть, а писать будешь как все — коротко и без лишнего геморроя.