【问题标题】:How do I convert an array of Strings to an Array of Int in Kotlin如何在 Kotlin 中将字符串数组转换为 Int 数组
【发布时间】:2017-12-04 12:09:02
【问题描述】:

我希望在 Kotlin 中将 List<String> 转换为 List<Int>

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

上面的方法可以做到,但感觉好像有更好的方法可以做到这一点(可能使用 lambdas 和流?)。

【问题讨论】:

标签: lambda kotlin


【解决方案1】:

如果你的输入真的有分隔符,你可以split 就像已经建议的那样。之后map 就是你所需要的。这样就可以了:

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

【讨论】:

    【解决方案2】:

    您可以将.map { ... } 与.toInt() 或.toIntOrNull() 一起使用:

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

    只有结果不是数组而是列表。最好在非性能关键代码中使用列表而不是数组,请参阅差异。

    如果需要数组,请添加.toTypedArray().toIntArray()

    【讨论】:

      【解决方案3】:
      val intArray = stringArray.map(String::toInt)
      

      或使用 lambda

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

      【讨论】:

      • 很好的答案。但是你能扩展它们的不同之处吗?
      • 他们对你的数组做同样的事情,它只是延迟的参数类型:在第一个例子中是 方法引用,在第二个例子中是 lambda i> 传递给map
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 2015-07-05
      • 2018-01-31
      • 2016-11-14
      • 1970-01-01
      相关资源
      最近更新 更多