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

  • Expresiones Lambda en Kotlin
  • kotlin cómo referir el scope externo esto en funciones de aplicación multicapa
  • Kotlin lambdas sin usar objects
  • Kotlin lambda con varios parameters
  • Kotlin: ¿Cómo puedo invocar un campo lambda que tiene un tipo genérico de su class?
  • Kotlin filter lambda array usando el índice de iteración
  • convert comparator en lambda en Kotlin
  • Kotin Cómo especificar la label de devolución cuando se incluye en Lambda
  • Enlace de datos: el campo Observable con valor lambda no comstack
  • Kotlin lambda con Interface como argumento
  • Pasar funciones a funciones en Kotlin