The flatMapIndexedTo() extension function in Kotlin appends all elements yielded from the results of the transform function being invoked on each element and its index in the original set to the given destination collection.
The syntax of Set.flatMapIndexedTo() extension function is:
fun <T, R, C : MutableCollection<in R>> Set<T>.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable<R>): C
This flatMapIndexedTo() extension function of Set appends all elements yielded from results of transform function being invoked on each element and its index in the original collection, to the given destination.
Parameter | Optional/Required | Description |
---|---|---|
destination | required | The collection to which the resulting elements will be appended. |
transform | required | A function that takes an index and an element and returns an iterable of results. |
Set.flatMapIndexedTo() returns value of type C
.
Using flatMapIndexedTo() to append the results of flattening a set of lists into a single list, including the index in the transformation, to a destination list.
For example,
fun main() {
val setOfLists: Set<List<Int>> = setOf(listOf(1, 2), listOf(3, 4), listOf(5))
val destinationList = mutableListOf<Int>()
setOfLists.flatMapIndexedTo(destinationList) { index, list -> list.map { it + index } }
println(destinationList)
}
[1, 2, 4, 5, 7]
Using flatMapIndexedTo() to append the results of flattening a set of strings into a single list of characters, including the index in the transformation, to a destination set.
For example,
fun main() {
val setOfStrings: Set<String> = setOf("one", "two", "three")
val destinationSet = mutableSetOf<Char>()
setOfStrings.flatMapIndexedTo(destinationSet) { index, str -> str.map { (it + index).toChar() } }
println(destinationSet)
}
[o, n, e, u, x, p, v, k, u, e, g, i]
Using flatMapIndexedTo() to append the results of flattening a set of integers into a single list of their factors, including the index in the transformation, to a destination list.
For example,
fun main() {
val setOfIntegers: Set<Int> = setOf(6, 8)
val destinationList = mutableListOf<Int>()
setOfIntegers.flatMapIndexedTo(destinationList) { index, number -> (1..number).filter { number % it == 0 }.map { it + index } }
println(destinationList)
}
[1, 3, 4, 7, 2, 3, 5, 9]
In this Kotlin tutorial, we learned about flatMapIndexedTo() extension function of Set: the syntax and few working examples with output and detailed explanation for each example.