来自groovy的koitlin中的数组列表

问题描述 投票:0回答:1

我正在尝试从基于Gradle的Groovy迁移到kotlin,并希望将以下代码转换为kotlin中的ArrayList。

jmUserProperties = new ArrayList();
project.properties.each{ k, v -> jmUserProperties << "${k}=" + "${v}" }

有关如何将上述逻辑转换为Kotlin的任何参考。

kotlin gradle gradlew gradle-kotlin-dsl
1个回答
0
投票

它实际上取决于properties的类型,但是鉴于上面的代码,我认为我们可以假定它是Map。如果是这种情况,则可以使用以下代码将Map实例的每个键值对映射(即转换)为其他对象的List(在这种情况下为字符串列表):

val jmUserProperties = properties.map { (key, value) -> "$key=$value" }

注意,结果List是不可变的(即,您不能添加/删除值),因此不是ArrayList的实例。如果您需要一个可变列表(即,如果您希望能够添加/删除项目),则可以使用:

val jmUserProperties = properties.map { (key, value) -> "$key=$value" }.toMutableList()

同样,它不一定会返回ArrayList(实际上它会返回,但是这是可以随时更改的实现细节)。

如果您想确定要找回ArrayList,可以使用:

val jmUserProperties = ArrayList(properties.map { (key, value) -> "$key=$value" })

完整示例:

// create a starting Map
val properties = mapOf(
        "key1" to "value1",
        "key2" to "value2",
        "key3" to "value3"
)

val jmUserProperties = ArrayList(properties.map { (key, value) -> "$key=$value" })
println(jmUserProperties)
println(jmUserProperties::class.java)
© www.soinside.com 2019 - 2024. All rights reserved.