Kotlin | Transformación de la colección

La biblioteca estándar de Kotlin proporciona diferentes conjuntos de funciones de extensión para transformaciones de colecciones . Estas funciones ayudan a crear nuevas colecciones a partir de colecciones existentes en función de las reglas definidas por la transformación. 
Hay diferentes números de funciones de transformación: 
 

  • Cartografía
  • Comprimir
  • Asociación
  • Aplastamiento
  • Representación de strings

Mapeo –

La transformación de mapeo se utiliza para crear una colección a partir de los resultados obtenidos de una función sobre los elementos de otra colección y la función base utilizada para el mapeo es map() . Cuando se aplica la función lambda dada a cada elemento subsiguiente, devuelve la lista de resultados lambda. 
Mantiene el orden del elemento que se almacena en la colección original. Para aplicar una transformación que además use el índice del elemento como argumento, podemos usar mapIndexed() .
Programa Kotlin de mapeo – 

Java

fun main(args : Array<String>) {
    val numbers = setOf(1, 2, 3)
 
    // multiple all elements by 2
    println("The new elements are: "+numbers.map { it * 2 })
 
    // multiple idx with element
    println("The modified elements are: "+numbers.mapIndexed
    { idx, value -> value * idx })
}

Producción: 

The new elements are: [2, 4, 6]
The modified elements are: [0, 2, 6]

Después de la transformación, si obtenemos valores nulos en ciertos elementos, podemos filtrar fácilmente los valores nulos de la colección solo llamando a la función mapNotNull() en lugar de map() , o mapIndexedNotNull() en lugar de mapIndexed() .
 

Kotlin

fun main(args: Array<String>) {
    val numbers = setOf(1, 2, 3)
 
    // filter out the null values and print
    println("Numbers without null value: "+numbers.mapNotNull
    { if ( it == 1) null else it * 2 })
 
    println("Numbers without null value: "+numbers.mapIndexedNotNull
    { idx, value -> if (idx == 0) null else value * idx })
}

Producción: 
 

Numbers without null value: [4, 6]
Numbers without null value: [2, 6]

Comprimir –

Comprimir ayuda de transformación en la construcción de pares seleccionando elementos de ambas colecciones del mismo valor de indexación y se puede hacer con la ayuda de la función de extensión zip() . Se puede invocar en una colección o una array pasando otra colección (array) como argumento y devuelve la Lista de objetos  de pares .
Los primeros elementos de pares de la colección receptora y los segundos de la colección pasados ​​como argumento. Si los tamaños de las colecciones no coinciden, la colección resultante de zip() es equivalente a la colección de tamaño más pequeño y los últimos elementos de la colección más grande se excluyen de los resultados. También se puede llamar en forma infija a zip b .
Programa Kotlin de usar el método zip() – 

Kotlin

fun main(args: Array<String>) {
    val numbers = listOf("One","Two","Three","four")
    val integers = listOf(1,2,3,4)
 
    // pair string number with integers
    println(numbers zip integers)
 
    val newInt = listOf(1,2)
    // pair string with less than numbers
    println("New pairs :"+numbers.zip(newInt))
}

Producción: 

[(One, 1), (Two, 2), (Three, 3), (four, 4)]
New pairs :[(One, 1), (Two, 2)]

Si tenemos una Lista de pares, podemos hacer la transformación inversa con la función de extensión  de descompresión de ayuda que crea dos listas a partir de estos pares:
 

  • La primera lista contiene el primer elemento de cada par de la lista original.
  • La segunda lista contiene el segundo elemento de la lista original.

Programa Kotlin de usar el método unzip() – 

Kotlin

fun main(args: Array<String>) {
    val companies = listOf("Apple" to 1, "Google" to 2,
        "Amazon" to 3, "Facebook" to 4)
 
    // print after unzip the pairs
    println("Pairs unzipped: "+companies.unzip())
}

Producción: 

Pairs unzipped: ([Apple, Google, Amazon, Facebook], [1, 2, 3, 4])

Asociación –

Las transformaciones de asociación ayudan a crear mapas a partir de los elementos de la colección y ciertos valores asociados con ellos. Aquí, la función de asociación básica es AssociateWith(), que crea un mapa en el que los elementos originales de la colección son las claves y los valores asociados se obtienen mediante la función de transformación dada a partir de los elementos originales. 
Nota: Si obtenemos dos elementos que son iguales, solo queda el último en el mapa.
Programa Kotlin de usar el método AssociateWith() – 
 

Kotlin

fun main(args: Array<String>) {
 
    val captains = listOf("Kohli", "Root", "Smith", "Williamson","Root")
     
    // print the elements associated with their length
    println(captains.associateWith { it.length })
}

Producción: 

{Kohli=5, Root=4, Smith=5, Williamson=10}

aplanamiento –

La transformación Flatten ayuda a convertir todas las colecciones anidadas en una sola colección. Si operamos colecciones anidadas, encontramos útiles las funciones de biblioteca estándar que brindan acceso plano a los elementos de la colección anidada.
La función básica es flatten() y podemos llamarla en una colección de colecciones, por ejemplo, una Lista de Conjuntos y luego devuelve una Lista única de todos los elementos de las colecciones anidadas.
Programa Kotlin de usar el método flatten() – 
 

Kotlin

fun main(args: Array<String>) {
 
    val openers = listOf(setOf("Warner", "Finch") ,setOf("Roy","Bairstow")
        ,setOf("Rohit,Dhawan"),setOf("Guptill","Henry"))
 
    // print the elements associated with their length
    println("All the openers are: "+openers.flatten())
}

Producción: 

All the openers are: [Warner, Finch, Roy, Bairstow, Rohit,Dhawan, Guptill, Henry]

Representación de strings –

La representación de strings significa que podemos recuperar el contenido de la colección en un formato legible. Hay dos funciones que transforman las colecciones en strings: 
 

  • unirse a la string()
  • unirse a()

La función joinToString() crea una única string a partir de los elementos de la colección en función de los argumentos proporcionados. Y la función joinTo() también crea una sola string pero agrega el resultado al objeto Appendable dado .
Cuando las funciones anteriores se llaman con los argumentos predeterminados, ambas devuelven un resultado similar a llamar aString() en la colección: una string de representaciones de strings de elementos separadas por comas con espacios.
Programa Kotlin de usar métodos de representación de strings – 
 

Kotlin

fun main(args: Array<String>) {
    val colors = listOf("Red","Green","Blue","Orange","Yellow")
 
    println(colors)
    // join all elements in a single List
    println(colors.joinToString())
 
    val listString = StringBuffer("Colors are: ")
    colors.joinTo(listString)
    println(listString)
}

Producción: 
 

[Red, Green, Blue, Orange, Yellow]
Red, Green, Blue, Orange, Yellow
Colors are: Red, Green, Blue, Orange, Yellow

Publicación traducida automáticamente

Artículo escrito por Praveenruhil y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *