Función associate En Kotlin

ANUNCIO
Loading...

En este tutorial estudiaremos el uso de la función associate en Kotlin a fin de construir un mapa a partir de una colección de datos e indicando una función lambda de transformación.

Función associate()

La función de extensión associate() retorna un mapa de pares clave-valor que son producidos por una función de transformación. Dicha función usa como cuerpo instancias de la clase Pair<K, V> que son consumidas para producir los pares.

// Sintaxis de associate() en arrays inline fun <T, K, V> Array<out T>.associate( transform: (T) -> Pair<K, V> ): Map<K, V> // Sintaxis de associate() en iterables inline fun <T, K, V> Iterable<T>.associate( transform: (T) -> Pair<K, V> ): Map<K, V>
Lenguaje del código: Kotlin (kotlin)

Aspectos a destacar de associate():

  • En el caso de que existan valores producidos con la misma clave, se agrega al resultado final el último par
  • El orden de los elementos de la colección original es conservado en el mapa
  • El rendimiento puede verse afectado por el consumo de objetos Pair en la transformación, así que úsala si este no es tu prioridad o si es la forma más efectiva de llegar a tu objetivo.

Considera la siguiente ilustración, donde se muestra un arreglo A = [a, b, c, d] y se aplica la función associate() con el fin de generar un mapa.

La función de transformación produce claves con los caracteres y valores con su código entero multiplicado por dos.

Ejemplo de función associate en Kotlin

La representación de este ejemplo en Kotlin se aplica en las siguientes sentencias:

fun main() { val letters = charArrayOf('a', 'b', 'c', 'd') val lettersAndCodesx2 = letters.associate { it to it.toInt() * 2 } println(lettersAndCodesx2) }
Lenguaje del código: Kotlin (kotlin)

Salida:

{a=194, b=196, c=198, d=200}

La función lambda de transformación pasada en associate() muestra que los pares producidos usan como clave la referencia it y como valor a la conversión entera de it por 2.

Recuerda que la función infix to() produce el mismo resultado que el constructor Pair(it, it.toInt() * 2).

¿Ha sido útil esta publicación?