我正在尝试从基于Gradle的Groovy迁移到kotlin,并希望将以下代码转换为kotlin中的ArrayList。
jmUserProperties = new ArrayList();
project.properties.each{ k, v -> jmUserProperties << "${k}=" + "${v}" }
有关如何将上述逻辑转换为Kotlin的任何参考。
它实际上取决于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)