Kotlin Tutorials

Kotlin Set flatMapTo()
Syntax & Examples

Set.flatMapTo() extension function

The flatMapTo() extension function in Kotlin appends all elements yielded from the results of the transform function being invoked on each element of the original set to the given destination collection.


Syntax of Set.flatMapTo()

The syntax of Set.flatMapTo() extension function is:

fun <T, R, C : MutableCollection<in R>> Set<T>.flatMapTo(destination: C, transform: (T) -> Iterable<R>): C

This flatMapTo() extension function of Set appends all elements yielded from results of transform function being invoked on each element of original collection, to the given destination.

Parameters

ParameterOptional/RequiredDescription
destinationrequiredThe collection to which the resulting elements will be appended.
transformrequiredA function that takes an element and returns an iterable of results.

Return Type

Set.flatMapTo() returns value of type C.



✐ Examples

1 Appending flattened lists to a destination list

Using flatMapTo() to append the results of flattening a set of lists into a single list to a destination list.

For example,

  1. Create a set of lists of integers.
  2. Create an empty list to hold the resulting elements.
  3. Define a transform function that returns the list itself.
  4. Use flatMapTo() to append the results to the destination list.
  5. Print the resulting list.

Kotlin Program

fun main() {
    val setOfLists: Set<List<Int>> = setOf(listOf(1, 2), listOf(3, 4), listOf(5))
    val destinationList = mutableListOf<Int>()
    setOfLists.flatMapTo(destinationList) { it }
    println(destinationList)
}

Output

[1, 2, 3, 4, 5]

2 Appending flattened strings into characters to a destination set

Using flatMapTo() to append the results of flattening a set of strings into a single list of characters to a destination set.

For example,

  1. Create a set of strings.
  2. Create an empty set to hold the resulting characters.
  3. Define a transform function that returns the characters of each string as an iterable.
  4. Use flatMapTo() to append the results to the destination set.
  5. Print the resulting set of characters.

Kotlin Program

fun main() {
    val setOfStrings: Set<String> = setOf("one", "two", "three")
    val destinationSet = mutableSetOf<Char>()
    setOfStrings.flatMapTo(destinationSet) { it.toList() }
    println(destinationSet)
}

Output

[o, n, e, t, w, h, r]

3 Appending flattened integers to their factors to a destination list

Using flatMapTo() to append the results of flattening a set of integers into a single list of their factors to a destination list.

For example,

  1. Create a set of integers.
  2. Create an empty list to hold the resulting factors.
  3. Define a transform function that returns the factors of each integer as an iterable.
  4. Use flatMapTo() to append the results to the destination list.
  5. Print the resulting list of factors.

Kotlin Program

fun main() {
    val setOfIntegers: Set<Int> = setOf(6, 8)
    val destinationList = mutableListOf<Int>()
    setOfIntegers.flatMapTo(destinationList) { number -> (1..number).filter { number % it == 0 } }
    println(destinationList)
}

Output

[1, 2, 3, 6, 1, 2, 4, 8]

Summary

In this Kotlin tutorial, we learned about flatMapTo() extension function of Set: the syntax and few working examples with output and detailed explanation for each example.