【问题标题】:How to explode a list into a Map in kotlin?如何在kotlin中将列表分解为地图?
【发布时间】:2019-09-24 17:21:28
【问题描述】:

想象一下你想改变这个:

val initialValues: List<Pair<String, String>>

第一个字符串表示键,第二个字符串表示值

进入地图:

val finalMap: Map<String,String>

每个对项包含两次,第一次使用原始键,第二次使用扩展键。

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

val finalMap = mutableMapOf<String, String>()

我在迭代 initialValues 时使用的。但我真的不喜欢它。

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

    explodedPairs.forEach { finalMap.put(it.first, it.second) }
}

你会怎么做更自信?

【问题讨论】:

    标签: kotlin functional-programming


    【解决方案1】:

    你可以像这样使用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}
    

    您也可以使用toMap 并执行此操作 -

    val map3 = initialList.toMap()
    println(map3.toString()) //{1=x, 2=y}
    

    这是我的初始列表声明 -

    val initialList = listOf(Pair(1, "x"), Pair(2, "y"))
    

    【讨论】:

      【解决方案2】:

      您可以使用associateassociateby

      【讨论】:

        【解决方案3】:

        你可以像这样使用mapOf

        val initialValues: List<Pair<String, String>> = listOf()
        val final = mapOf(*initialValues.toTypedArray())
        

        但是@Supriya 使用toMap 有更好的答案

        【讨论】:

          猜你喜欢
          • 2016-01-01
          • 2021-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-16
          • 2019-07-23
          • 2021-10-11
          • 2019-05-02
          相关资源
          最近更新 更多