Hanbit the Developer

Kotlin Documentation | Iterators 본문

Mobile/Kotlin

Kotlin Documentation | Iterators

hanbikan 2023. 5. 24. 13:46

Kotlin Documentation 시리즈에 대해

Category: Standard library - Collections

문서 링크: https://kotlinlang.org/docs/iterators.html


구체적인 자료 구조를 알지 못해도 연속된 아이템을 돌 수 있는 메커니즘을 제공한다. 아이템들을 출력하거나, 모든 아이템의 부호를 바꾸는 등의 작업을, 컬렉션의 종류와 상관 없이, 하나의 함수로 구현이 가능하다.

Iterable<T>을 통해 제공되는 iterator()를 통해 반복자에 접근할 수 있다.

val numbers = listOf("one", "two", "three", "four")
val numbersIterator = numbers.iterator()
while (numbersIterator.hasNext()) {
    println(numbersIterator.next())
}

단, 한번 끝까지 돌게 되면 새 반복자를 생성해야 다시 돌 수 있다.

for, forEach를 통한 아래 코드는 위 반복자를 사용한 코드와 같다.

val numbers = listOf("one", "two", "three", "four")
for (item in numbers) {
    println(item)
}
val numbers = listOf("one", "two", "three", "four")
numbers.forEach {
    println(it)
}

List iterators

리스트를 위한 특별한 구현체인 ListIterator는 앞, 뒤 방향으로의 반복을 지원한다.

val numbers = listOf("one", "two", "three", "four")
val listIterator = numbers.listIterator()
while (listIterator.hasNext()) listIterator.next()
println("Iterating backwards:")
while (listIterator.hasPrevious()) {
    print("Index: ${listIterator.previousIndex()}")
    println(", value: ${listIterator.previous()}")
}

Mutable iterators

mutable collection에는 MutableIterator가 존재하며, remove() 함수를 제공한다.

또한 MutableListIterator는 추가로 add(), set() 함수를 제공한다.