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