Как преобразовать массив строк в массив Int в Kotlin?
Котлин имеет много сокращений и интересных особенностей. Итак, мне интересно, есть ли быстрый и короткий способ преобразования массива строк в массив целых чисел. Похожий на этот код в Python:
results = [int(i) for i in results]
3 ответов
можно использовать .map { ... }
С .toInt()
или .toIntOrNull()
:
val result = strings.map { it.toInt() }
только результат не массив, а список. Предпочтительно использовать списки над массивами в коде, критичном для производительности, см. различия.
Если вам нужен массив, добавить .toTypedArray()
или .toIntArray()
.
если вы пытаетесь преобразовать List
структура, которая реализует RandomAccess
(как ArrayList
или Array
), вы можете использовать эту версию для лучшей производительности:
IntArray(strings.size) { strings[it].toInt() }
эта версия скомпилирована в базовый цикл for и 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;
}
Я бы использовал что-то простое, как
val strings = arrayOf("1", "2", "3")
val ints = ints.map { it.toInt() }.toTypedArray()
альтернативно, если вы в расширениях:
fun Array<String>.asInts() = this.map { it.toInt() }.toTypedArray()
strings.asInts()