val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9) val result = list .map { println("map $it") it } .filter { println("filter $it") it % 2 == 0 } .take(3) println("--------") for(it in result) println("for $it")
val lineList: List = File("data.jsonlines").readLines() val result = lineList .map { convertToData(it) } .filter { filterData(it) } .take(10) for (it in result) { println(it) }
package kotlin.sequences public interface Sequence { public operator fun iterator(): Iterator } ίϝϯτൈ͍ͯ·͕͢ɺҎԼΑΓ h"ps:/ /github.com/JetBrains/kotlin/blob/1.0.2/libraries/stdlib/src/kotlin/collec
val list = listOf(1, 2, 3) val sequence = list.asSequence() // ʂ val result = sequence .map { println("map $it") it } println("--------") for (it in result) println("for $it")
internal class FilteringSequence(private val sequence: Sequence, private val sendWhen: Boolean = true, private val predicate: (T) -> Boolean ) : Sequence { override fun iterator(): Iterator = object : Iterator { val iterator = sequence.iterator(); var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue var nextItem: T? = null private fun calcNext() { while (iterator.hasNext()) { val item = iterator.next() if (predicate(item) == sendWhen) { nextItem = item nextState = 1 return } } nextState = 0 } override fun next(): T { if (nextState == -1) calcNext() if (nextState == 0) throw NoSuchElementException() val result = nextItem nextItem = null nextState = -1 return result as T } override fun hasNext(): Boolean { if (nextState == -1) calcNext() return nextState == 1 } } }