Recherche…


Tableaux génériques

Les tableaux génériques de Kotlin sont représentés par Array<T> .

Pour créer un tableau vide, utilisez la fonction de fabrique emptyArray<T>() :

val empty = emptyArray<String>()

Pour créer un tableau avec une taille et des valeurs initiales données, utilisez le constructeur:

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

Les tableaux ont get(index: Int): T et set(index: Int, value: T) fonctions:

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

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

Tableaux de primitifs

Ces types n'héritent pas de Array<T> pour éviter la boxe, cependant, ils ont les mêmes attributs et méthodes.

Type Kotlin Fonction d'usine Type 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[]

Les extensions

average() est défini pour Byte , Int , Long , Short , Double , Float et renvoie toujours le 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() renvoie un élément du tableau

getOrNull(index: Int) renvoie null si l'index est hors limites, sinon un élément du tableau

first() , last()

toHashSet() renvoie un HashSet<T> de tous les éléments

sortedArray() , sortedArrayDescending() crée et retourne un nouveau tableau avec des éléments triés de courant

sort() , sortDescending trie le tableau sur place

min() , max()

Itérer Array

Vous pouvez imprimer les éléments du tableau en utilisant la même boucle que la boucle améliorée Java, mais vous devez changer le mot clé de : en in .

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

Vous pouvez également modifier le type de données en boucle.

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

Créer un tableau

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

Créer un tableau en utilisant une fermeture

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

Créer un tableau non initialisé

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

Le tableau renvoyé aura toujours un type nullable. Les tableaux d'éléments non nullables ne peuvent pas être créés non initialisés.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow