Kotlin有许多简化的语法和有趣的特性。所以我想知道是否有一种快速简洁的方式将字符串数组转换为整数数组,类似于Python中的以下代码:
results = [int(i) for i in results]
Kotlin有许多简化的语法和有趣的特性。所以我想知道是否有一种快速简洁的方式将字符串数组转换为整数数组,类似于Python中的以下代码:
results = [int(i) for i in results]
.map { ... }
` 以及 `.toInt()
` 或者 `.toIntOrNull()
`:val result = strings.map { it.toInt() }
仅结果不是数组,而是列表。在非性能关键代码中,优先使用列表,参见这里。
如果需要一个数组,请添加.toTypedArray()
或.toIntArray()
。
我会使用类似简单的东西,比如
val strings = arrayOf("1", "2", "3")
val ints = ints.map { it.toInt() }.toTypedArray()
或者,如果你喜欢扩展程序:
fun Array<String>.asInts() = this.map { it.toInt() }.toTypedArray()
strings.asInts()
如果你正在尝试转换实现RandomAccess
的List
结构(比如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;
}
如果你像其他答案建议的那样使用Array.map
,你将得到一个List
而不是一个Array
。如果你想把一个数组strings
映射到另一个数组results
,可以直接这样做:
val results = Array(strings.size) { strings[it].toInt() }
相较于先将元素映射到 List
再通过调用 .toTypedArray()
将元素复制到 Array
中,这种方式更加高效。
""
(空字符串).toTypedArray()
或 .toIntArray()
。 fun stringToIntList(data: String): List<Int> =
data.split(",").filter { it.toIntOrNull() != null }
.map { it.toInt() }
找到以下最简单的内容
strings.chars().toArray()
val result = "[1, 2, 3, 4, 5]".removeSurrounding("[","]").replace(" ","").split(",").map { it.toInt() }