Skip to content

Instantly share code, notes, and snippets.

@magdamiu
Created December 17, 2021 14:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save magdamiu/640b39912d6ada8c446da1312b8b64bd to your computer and use it in GitHub Desktop.
Save magdamiu/640b39912d6ada8c446da1312b8b64bd to your computer and use it in GitHub Desktop.
Collections vs Sequences
var someNumbers = listOf(1, 4, 5, 6, 7, 8, 2323, 5456, 343, 2)
someNumbers
.filter { it % 2 == 0 }
.map { it * 3 }
.sum()
someNumbers
.asSequence()
.filter { it % 2 == 0 }
.map { it * 2 }
.sum()
// collection
interface Iterable<out T> {
operator fun iterator(): Iterator<T>
}
// sequence
interface Sequence<out T> {
operator fun iterator(): Iterator<T>
}
// collection
public inline fun <T, R> Iterable<T>.map(transform: (T) -> R): List<R> {
return mapTo(ArrayList<R>(collectionSizeOrDefault(10)), transform)
}
// sequence
public fun <T, R> Sequence<T>.map(transform: (T) -> R): Sequence<R> {
return TransformingSequence(this, transform)
}
var someNumbers = listOf(1, 4, 5, 6, 7, 8, 2323, 5456, 343, 2)
someNumbers
.filter { it % 2 == 0 } // 1 collection created
.map { it * 3 } // 1 collection created
.sum()
// total collections created = 2
someNumbers
.asSequence()
.filter { it % 2 == 0 }
.map { it * 2 }
.sum()
// total collections created = 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment