web-dev-qa-db-fra.com

Comment convertir un tableau String en tableau Int dans Kotlin?

Kotlin a de nombreux raccourcis et fonctionnalités intéressantes. Donc, je me demande s'il existe un moyen rapide et court de convertir un tableau de chaînes en un tableau d'entiers. Similaire à ce code en Python:

results = [int(i) for i in results]
15
saidfagan

Vous pouvez utiliser .map { ... } avec .toInt() ou .toIntOrNull() :

val result = strings.map { it.toInt() }

Seul le résultat n'est pas un tableau mais une liste. Il est préférable d'utiliser des listes sur des tableaux dans du code non critique pour les performances, voir les différences .

Si vous avez besoin d'un tableau, ajoutez .toTypedArray() ou .toIntArray() .

37
hotkey

Si vous essayez de convertir une structure List qui implémente RandomAccess (comme ArrayList ou Array), vous pouvez utiliser cette version pour de meilleures performances:

IntArray(strings.size) { strings[it].toInt() }

Cette version est compilée en boucle de base et int[]:

int size = strings.size();
int[] result = new int[size];
int index = 0;

for(int newLength = result.length; index < newLength; ++index) {
    String numberRaw = strings.get(index);
    int parsedNumber = Integer.parseInt(numberRaw);
    result[index] = parsedNumber;
}
2
Yoav Sternberg

J'utiliserais quelque chose de simple comme

val strings = arrayOf("1", "2", "3")
val ints = ints.map { it.toInt() }.toTypedArray()

Alternativement, si vous aimez les extensions:

fun Array<String>.asInts() = this.map { it.toInt() }.toTypedArray()

strings.asInts()
1
s1m0nw1