Cómo convertir String array a Int array en Kotlin?

Kotlin tiene muchos shorthands y características interesantes. Entonces, me pregunto si hay alguna forma rápida y corta de convertir una matriz de cadena a una matriz de integers. Similar a este código en Python:

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

Puede usar .map { ... } con .toInt() o .toIntOrNull() :

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

Solo el resultado no es una matriz, sino una list. Es preferible usar lists sobre arreglos en código que no sea de performance crítico, vea las diferencias .

Si necesita una matriz, agregue .toTypedArray() o .toIntArray() .

Usaría algo simple como

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

Alternativamente, si te gustan las extensiones:

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

Si intenta convertir una estructura de List que implementa RandomAccess (como ArrayList o Array ), puede usar esta versión para un mejor performance:

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

Esta versión está comstackda en un bucle básico e 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; }