Buscar..


Arreglos Genéricos

Los arrays genéricos en Kotlin están representados por Array<T> .

Para crear una matriz vacía, use la función de fábrica emptyArray<T>() :

val empty = emptyArray<String>()

Para crear una matriz con un tamaño dado y valores iniciales, use el constructor:

var strings = Array<String>(size = 5, init = { index -> "Item #$index" })
print(Arrays.toString(a)) // prints "[Item #0, Item #1, Item #2, Item #3, Item #4]"
print(a.size) // prints 5

Las matrices tienen funciones get(index: Int): T y set(index: Int, value: T) :

strings.set(2, "ChangedItem")
print(strings.get(2)) // prints "ChangedItem"

// You can use subscription as well:
strings[2] = "ChangedItem"
print(strings[2]) // prints "ChangedItem"

Arreglos de primitivos

Estos tipos no se heredan de Array<T> para evitar el boxeo, sin embargo, tienen los mismos atributos y métodos.

Tipo kotlin Función de fábrica Tipo JVM
BooleanArray booleanArrayOf(true, false) boolean[]
ByteArray byteArrayOf(1, 2, 3) byte[]
CharArray charArrayOf('a', 'b', 'c') char[]
DoubleArray doubleArrayOf(1.2, 5.0) double[]
FloatArray floatArrayOf(1.2, 5.0) float[]
IntArray intArrayOf(1, 2, 3) int[]
LongArray longArrayOf(1, 2, 3) long[]
ShortArray shortArrayOf(1, 2, 3) short[]

Extensiones

average() se define para Byte , Int , Long , Short , Double , Float y siempre devuelve Double :

val doubles = doubleArrayOf(1.5, 3.0)
print(doubles.average()) // prints 2.25

val ints = intArrayOf(1, 4)
println(ints.average()) // prints 2.5

component1() , component2() , ... component5() devuelve un elemento de la matriz

getOrNull(index: Int) devuelve nulo si el índice está fuera de los límites, de lo contrario, un elemento de la matriz

first() , last()

toHashSet() devuelve un HashSet<T> de todos los elementos

sortedArray() , sortedArrayDescending() crea y devuelve una nueva matriz con elementos ordenados de la corriente

sort() , sortDescending ordena la matriz en el lugar

min() , max()

Iterar Array

Puede imprimir los elementos de la matriz utilizando el bucle igual que el bucle mejorado de Java, pero necesita cambiar la palabra clave de : a in .

val asc = Array(5, { i -> (i * i).toString() })
for(s : String in asc){
    println(s);
}

También puede cambiar el tipo de datos en el bucle.

val asc = Array(5, { i -> (i * i).toString() })
for(s in asc){
    println(s);
}

Crear una matriz

val a = arrayOf(1, 2, 3) // creates an Array<Int> of size 3 containing [1, 2, 3].

Crear una matriz utilizando un cierre

val a = Array(3) { i -> i * 2 } // creates an Array<Int> of size 3 containing [0, 2, 4]

Crear una matriz sin inicializar

val a = arrayOfNulls<Int>(3) // creates an Array<Int?> of [null, null, null]

La matriz devuelta siempre tendrá un tipo anulable. Las matrices de elementos no anulables no se pueden crear sin inicializar.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow