KOTLIN · 컬렉션
커스텀 이터레이터 (Custom Iterator)
Iterator 인터페이스를 구현하여 커스텀 순회 로직을 작성합니다. operator fun iterator()로 for-in 루프를 지원합니다.
컬렉션고급iteratoriterablecustom-iterationfor-in
핵심 설명
Iterator 인터페이스를 구현하여 커스텀 순회 로직을 작성합니다. operator fun iterator()로 for-in 루프를 지원합니다.
Kotlin code
class DateRange(
private val start: java.time.LocalDate,
private val end: java.time.LocalDate
) : Iterable<java.time.LocalDate> {
override fun iterator() = object : Iterator<java.time.LocalDate> {
var current = start
override fun hasNext() = !current.isAfter(end)
override fun next(): java.time.LocalDate {
val result = current
current = current.plusDays(1)
return result
}
}
}
class FibonacciSequence(private val limit: Int) : Iterable<Long> {
override fun iterator() = object : Iterator<Long> {
var a = 0L; var b = 1L; var count = 0
override fun hasNext() = count < limit
override fun next(): Long {
count++
val result = a
val next = a + b; a = b; b = next
return result
}
}
}
fun main() {
val start = java.time.LocalDate.of(2024, 1, 1)
val end = java.time.LocalDate.of(2024, 1, 5)
for (date in DateRange(start, end)) print("$date ")
println()
FibonacciSequence(8).forEach { print("$it ") }
}학습 팁
Iterable을 구현하면 for 루프, map, filter 등 모든 컬렉션 함수를 사용할 수 있습니다.
주의할 점
next()에서 hasNext()를 확인하지 않고 호출하면 NoSuchElementException이 발생합니다. 항상 사전 검사를 하세요.
자주 묻는 질문
커스텀 이터레이터 (Custom Iterator)란 무엇인가요?
Iterator 인터페이스를 구현하여 커스텀 순회 로직을 작성합니다. operator fun iterator() 로 for-in 루프를 지원합니다.
커스텀 이터레이터 (Custom Iterator) 학습 시 주의할 점은 무엇인가요?
next() 에서 hasNext() 를 확인하지 않고 호출하면 NoSuchElementException 이 발생합니다. 항상 사전 검사를 하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.