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]
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()
.
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;
}
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()