Kotlin | Recuperar piezas de colección

Kotlin proporciona funciones de extensión para recuperar partes de la colección. Una función miembro definida fuera de la clase se denomina función de extensión . Estas funciones de extensión pueden proporcionar una variedad de formas de seleccionar diferentes elementos de la lista.
Cuatro funciones de extensión son:

  • Rodaja
  • Tomar y soltar
  • troceado
  • con ventana

Rodaja

Las funciones de división funcionan como en otros idiomas, lo que devuelve una lista de elementos con índices dados. Estos índices se pueden pasar como rango o valores enteros.
Ejemplo de Kotlin para demostrar slice –

fun main(args: Array<String>) {
    val fruits = listOf("apple", "banana", "cherries",
        "dragon_fruit", "egg_fruit", "fig")
    println(fruits.slice(1..4))
    println(fruits.slice(0..4 step 2))
    println(fruits.slice(setOf(1, 2, 4)))
}

Producción:

[banana, cherries, dragon_fruit, egg_fruit]
[apple, cherries, egg_fruit]
[banana, cherries, egg_fruit]

Tomar y soltar

Como sugiere el nombre, la función take() puede tomar un número específico de elementos desde el principio. Si queremos tomar elementos del último, podemos llamar a la función takeLast() .
De manera similar, la función drop() toma todos los elementos excepto el número especificado de elementos desde el principio y dropLast() toma todos los elementos excepto el número especificado de elementos desde el último.

Ejemplo de Kotlin para demostrar tomar y soltar:

fun main(args: Array<String>) {
    val fruits = listOf("apple", "banana", "cherries",
        "dragon_fruit", "egg_fruit", "fig")
    println(fruits.take(3))
    println(fruits.takeLast(3))
    println(fruits.drop(4))
    println(fruits.dropLast(4))
}

Producción:

[apple, banana, cherries]
[dragon_fruit, egg_fruit, fig]
[egg_fruit, fig]
[apple, banana]

Hay cuatro funciones en tomar y soltar con las que podemos usar predicados para definir el número de elementos para tomar y soltar.

programa kotlin-

fun main(args: Array<String>) {
    val fruits = listOf("apple", "banana", "cherries",
        "dragon_fruit", "egg_fruit", "fig")
  
    //takeWhile() takes the items upto but 
    // excluding the first one not matching the predicate.
    println(fruits.takeWhile{!it.startsWith("d")})
  
    //takeLastWhile() takes a range of items 
    // matching the predicate from the end.
    println(fruits.takeLastWhile{it != "cherries"})
  
    //dropWhile() returns the items from first
    // one not matching the predicate to the end.
    println(fruits.dropWhile{it.length == 5})
  
    //dropWhileLast() returns element from the 
    // beginning to the last one not matching the predicate.
    println(fruits.dropLastWhile{it.contains("i")})
}

Producción:

[apple, banana, cherries]
[dragon_fruit, egg_fruit, fig]
[banana, cherries, dragon_fruit, egg_fruit, fig]
[apple, banana]

troceado

La fragmentación es una función mediante la cual las piezas individuales de una lista se desglosan y luego se agrupan en un tamaño de fragmento específico. La función chunk() toma un solo argumento y devuelve listas de ese tamaño de fragmento.

También podemos aplicar la transformación para los fragmentos devueltos. Para hacer eso, proporcionamos la transformación como una función lambda cuando llamamos a chunked(). Cuando se llama a chunked() con una transformación, los fragmentos son listas de corta duración que deben usarse en la expresión lambda para otro propósito.

Programa Kotlin de usar la función chunk() –

fun main(args: Array<String>) {
    val fruits = listOf("apple", "banana", "cherries",
        "dragon_fruit", "egg_fruit", "fig")
    // chunks into list size of three
    println(fruits.chunked(3))
  
    // lambda function to sum the elements
    val numbers = (0..11).toList()
    println(numbers.chunked(3) { it.sum() })
}

Producción:

[[apple, banana, cherries], [dragon_fruit, egg_fruit, fig]]
[3, 12, 21, 30]

con ventana

La función windowed() puede obtener todos los rangos posibles de colección de elementos en un tamaño determinado. Devuelve una lista de rangos de elementos que vería en la colección usando una ventana deslizante del tamaño particular.
Tiene dos parámetros opcionales:
paso: distancia entre el primer elemento de cada ventana. De forma predeterminada, el valor es 1, por lo que el resultado contiene ventanas a partir de todos los elementos.
PartialWindows: si es verdadero, incluye las ventanas de menor tamaño que quedan al final.

Programa Kotlin para demostrar la función windowed() –

fun main(args: Array<String>) {
    val fruits = listOf("apple", "banana", "cherries","orange")
    println(fruits.windowed(3))
    println(fruits.windowed(3, step = 2, partialWindows = true))
}

Producción:

[[apple, banana, cherries], [banana, cherries, orange]]
[[apple, banana, cherries], [cherries, orange]]

Hay una función zipWithNext() para construir una ventana de dos elementos, también se puede llamar con una transformación.
Programa Kotlin para demostrar zipWithNext() –

fun main(args: Array<String>) {
    val fruits = listOf("apple", "banana", "cherries",
        "dragon_fruit", "egg_fruit", "fig")
    println(fruits.zipWithNext())
}

Producción:

[(apple, banana), (banana, cherries), (cherries, dragon_fruit), 
(dragon_fruit, egg_fruit), (egg_fruit, fig)]

Publicación traducida automáticamente

Artículo escrito por naman_gupta_ 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 *