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

¿Estás Creando Una App De tareas?

Te comparto una plantilla Android profesional con arquitectura limpia, interfaz moderna y funcionalidades listas para usar. Ideal para acelerar tu desarrollo.

Banner de plantilla de tareas Android

Ú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!