Novedades de las colecciones y campos de Kotlin 1.4.0 | de Kundan Kumar | Octubre de 2020

Imagen tomada de: https://blog.jetbrains.com/kotlin/2020/08/kotlin-1-4-released-with-a-focus-on-quality-and-performance/

En Kotlin 1.4.0, la biblioteca estándar contiene varias funciones útiles para trabajar con colecciones y campos.

Colecciones:

Las colecciones contienen algunos objetos del mismo tipo. Hay varios tipos de colecciones, como Lista, Conjunto, Mapa. En Kotlin 1.4.0, incluyen los siguientes métodos nuevos para las colecciones:

(y). mezclado (): Este método se utiliza para mezclar la secuencia, devolviendo una nueva lista con elementos de esta lista mezclados aleatoriamente.

val list = listOf('a', 'b', 'c', 'd', 'e', 'f')
val result = list.shuffled()
//the result will something like [c, b, f, d, a, e]

ii). total(): devuelve la suma de sus valores para todos los elementos de la colección. Este método puede crear sumas de tipos Int, Long, Double, UInt, un ULong.

data class Employe(val name: String, val salary: Double)

(iii). setOfNotNull (): que da un conjunto que consta de todos los elementos distintos de cero con los argumentos dados.

val notNullSet = setOfNotNull(10, 20, null, 40, 50, null)
//result of notNullSet = [10, 20, 40, 50]

(iv). onEachIndexed (): Realiza la operación dada en cada elemento de la colección, proporciona un índice de secuencia con el elemento y luego devuelve la colección en sí.

val list = listOf("Chandan", "Manish", "Suraj", "Kundan")
list.onEachIndexed {
index, item -> println(index.toString() + ":" + item)
}

(en contra). flatMapIndexed (): Devuelve una lista de todos los elementos generados a partir de los resultados. convertir una función invocada en cada elemento y su índice en la colección original.

val list = listOf("Hello", "kot", "lin", "world")
val kotlin = list.flatMapIndexed { index, item ->
if (index in 1..2) item.toList() else emptyList()
}

(vi). * OrNull (): Ellos están volviendo null en colecciones vacías.

val list = listOf("Alice" to 42, "Bob" to 28, "Carol" to 51)
val oldestPerson = list.maxByOrNull { it.second }
// oldestPerson = (Carol, 51)

(vii). runningFold (): Devuelve una lista que contiene los valores de acumulación secuencial generados al aplicar la operación de izquierda a derecha a cada elemento y el valor del acumulador actual que comienza con el valor inicial.

val strings = listOf("a", "b", "c", "d")
strings.runningFold("s") { acc, string -> acc + string }
// result of strings = [s, sa, sab, sabc, sabcd]

Campo:

Los siguientes métodos nuevos incluyen colecciones:

(y). mezcla(): Mezcla aleatoriamente los elementos de este campo en su lugar utilizando la instancia aleatoria especificada como fuente de aleatoriedad.

val array = arrayOf(1, 2, 3, 4, 5)
array.shuffle()
//result of array = [3, 4, 1, 5, 2]

ii). en cada (): Realiza la acción en cada elemento y luego devuelve el campo en sí.

var language = ""
val array = arrayOf("k", "o", "t", "l", "i", "n")
val result = array.onEach { language += it }
//here language = kotlin

(iii). conectar con(): Devuelve un Mapa donde las claves son elementos de una matriz dada y los valores son creados por la función valueSelector aplicada a cada elemento.

val words = listOf("a", "abc", "ab", "def", "abcd")
val withLength = words.associateWith { it.length }
println(withLength.keys) // [a, abc, ab, def, abcd]
println(withLength.values) // [1, 3, 2, 3, 4]

Implementación de una cola bidireccional. Una cola de dos caras le permite agregar o eliminar elementos al principio y al final de la cola. los ArrayDeque la implementación usa un campo modificable debajo de él: almacena el contenido en un búfer circular, un Arrayy lo cambia de tamaño Array solo cuando está lleno.

val deque = ArrayDeque(listOf(1, 2, 3))

Deja una respuesta

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