Función associate En Kotlin

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>

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)
}

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).

Únete Al Discord De Develou

Si tienes problemas con el código de este tutorial, preguntas, recomendaciones o solo deseas discutir sobre desarrollo Android conmigo y otros desarrolladores, únete a la comunidad de Discord de Develou y siéntete libre de participar como gustes. ¡Te espero!