associateWithTo

Platform and version requirements: JVM (1.4), JS (1.4), Native (1.4)
inline fun <K, V, M : MutableMap<in K, in V>> Array<out K>.associateWithTo(
    destination: M, 
    valueSelector: (K) -> V
): M
inline fun <V, M : MutableMap<in Byte, in V>> ByteArray.associateWithTo(
    destination: M, 
    valueSelector: (Byte) -> V
): M
inline fun <V, M : MutableMap<in Short, in V>> ShortArray.associateWithTo(
    destination: M, 
    valueSelector: (Short) -> V
): M
inline fun <V, M : MutableMap<in Int, in V>> IntArray.associateWithTo(
    destination: M, 
    valueSelector: (Int) -> V
): M
inline fun <V, M : MutableMap<in Long, in V>> LongArray.associateWithTo(
    destination: M, 
    valueSelector: (Long) -> V
): M
inline fun <V, M : MutableMap<in Float, in V>> FloatArray.associateWithTo(
    destination: M, 
    valueSelector: (Float) -> V
): M
inline fun <V, M : MutableMap<in Double, in V>> DoubleArray.associateWithTo(
    destination: M, 
    valueSelector: (Double) -> V
): M
inline fun <V, M : MutableMap<in Boolean, in V>> BooleanArray.associateWithTo(
    destination: M, 
    valueSelector: (Boolean) -> V
): M
inline fun <V, M : MutableMap<in Char, in V>> CharArray.associateWithTo(
    destination: M, 
    valueSelector: (Char) -> V
): M
@ExperimentalUnsignedTypes inline fun <V, M : MutableMap<in UInt, in V>> UIntArray.associateWithTo(
    destination: M, 
    valueSelector: (UInt) -> V
): M
@ExperimentalUnsignedTypes inline fun <V, M : MutableMap<in ULong, in V>> ULongArray.associateWithTo(
    destination: M, 
    valueSelector: (ULong) -> V
): M
@ExperimentalUnsignedTypes inline fun <V, M : MutableMap<in UByte, in V>> UByteArray.associateWithTo(
    destination: M, 
    valueSelector: (UByte) -> V
): M
@ExperimentalUnsignedTypes inline fun <V, M : MutableMap<in UShort, in V>> UShortArray.associateWithTo(
    destination: M, 
    valueSelector: (UShort) -> V
): M

Populates and returns the destination mutable map with key-value pairs for each element of the given array, where key is the element itself and value is provided by the valueSelector function applied to that key.

If any two elements are equal, the last one overwrites the former value in the map.

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
data class Person(val firstName: String, val lastName: String) {
    override fun toString(): String = "$firstName $lastName"
}

val scientists = listOf(Person("Grace", "Hopper"), Person("Jacob", "Bernoulli"), Person("Jacob", "Bernoulli"))
val withLengthOfNames = mutableMapOf<Person, Int>()
println("withLengthOfNames.isEmpty() is ${withLengthOfNames.isEmpty()}") // true

scientists.associateWithTo(withLengthOfNames) { it.firstName.length + it.lastName.length }

println("withLengthOfNames.isNotEmpty() is ${withLengthOfNames.isNotEmpty()}") // true
// Jacob Bernoulli only occurs once in the map because only the last pair with the same key gets added
println(withLengthOfNames) // {Grace Hopper=11, Jacob Bernoulli=14}
//sampleEnd
}
Platform and version requirements: JVM (1.3), JS (1.3), Native (1.3)
inline fun <K, V, M : MutableMap<in K, in V>> Iterable<K>.associateWithTo(
    destination: M, 
    valueSelector: (K) -> V
): M

Populates and returns the destination mutable map with key-value pairs for each element of the given collection, where key is the element itself and value is provided by the valueSelector function applied to that key.

If any two elements are equal, the last one overwrites the former value in the map.

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
data class Person(val firstName: String, val lastName: String) {
    override fun toString(): String = "$firstName $lastName"
}

val scientists = listOf(Person("Grace", "Hopper"), Person("Jacob", "Bernoulli"), Person("Jacob", "Bernoulli"))
val withLengthOfNames = mutableMapOf<Person, Int>()
println("withLengthOfNames.isEmpty() is ${withLengthOfNames.isEmpty()}") // true

scientists.associateWithTo(withLengthOfNames) { it.firstName.length + it.lastName.length }

println("withLengthOfNames.isNotEmpty() is ${withLengthOfNames.isNotEmpty()}") // true
// Jacob Bernoulli only occurs once in the map because only the last pair with the same key gets added
println(withLengthOfNames) // {Grace Hopper=11, Jacob Bernoulli=14}
//sampleEnd
}

© 2010–2021 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/associate-with-to.html