¿Cómo convierto una matriz de cadenas a una matriz de Int en Kotlin?

Estoy buscando convertir una List<String> a una List<Int> en Kotlin.

 val stringArray = "1 2 3 4 5 6".split(" ") val intArray = MutableList<Int>(0, {0}) for (item in stringArray) { intArray.add(item.toInt()) } 

Lo anterior lo hará, pero se siente como si hubiera una mejor manera de hacerlo (¿es posible con lambdas y streams?).

Si su input realmente tiene delimitadores, puede split como ya se sugirió. Después el map es lo que necesitas. Esto hará el truco:

 val numbers = "1 2 3 4 5 6" val result = numbers.split(" ").map(String::toInt) 
 val intArray = stringArray.map(String::toInt) 

o con lambda

 val intArray = stringArray.map { it.toInt() } 

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() .

  • Pasando lambda en lugar de interfaz
  • Kotlin y Jack no son compatibles (Android Studio 2.3.2)
  • Kotlin nombró la syntax del parámetro para el cierre / lambda
  • Comparador como lambda
  • Kotin Cómo especificar la label de devolución cuando se incluye en Lambda
  • Función para expresión lambda
  • Usar interfaces funcionales con types de funciones en Kotlin
  • Inicializador de propiedad de múltiples líneas / complejo sin lambda