如何在Kotlin中将列表爆炸到Map中?

Ber*_*tuz 1 functional-programming kotlin

假设您要转换此代码:

val initialValues: List<Pair<String, String>>
Run Code Online (Sandbox Code Playgroud)

其中第一个String代表键,第二个String代表值

进入地图:

val finalMap: Map<String,String>
Run Code Online (Sandbox Code Playgroud)

每个对项包含两次,第一个具有原始密钥,第二个具有某种扩展密钥。

你会怎么做?目前,我正在使用

val finalMap = mutableMapOf<String, String>()
Run Code Online (Sandbox Code Playgroud)

我在遍历时使用的代码initialValues。但是我真的不喜欢。

initialValues.forEach {
    val explodedPairs:List<Pair<String,String>>  = <do-something> 

    explodedPairs.forEach { finalMap.put(it.first, it.second) }
}
Run Code Online (Sandbox Code Playgroud)

您将如何更果断地做?

Sup*_*iya 5

您可以像这样使用associate/associateBy

val map1 = initialList.associate { it.first to it.second }
println(map1.toString()) //{1=x, 2=y}

val map2 = initialList.associateBy({it.first},{it.second})
println(map2.toString()) //{1=x, 2=y}
Run Code Online (Sandbox Code Playgroud)

您还可以使用toMap并执行以下操作-

val map3 = initialList.toMap()
println(map3.toString()) //{1=x, 2=y}
Run Code Online (Sandbox Code Playgroud)

这是我的initialList声明-

val initialList = listOf(Pair(1, "x"), Pair(2, "y"))
Run Code Online (Sandbox Code Playgroud)