Kotlin:如何将列表转换为与列表映射?

我有一个如下的列表{(“a”,1),(“b”,2),(“c”,3),(“a”,4)}

我想把它转换为如下所示的列表图{(“a”(1,4)),(“b”,(2)),(“c”,(3)))}

即对于一个,我们有一个1和4的列表,因为关键是一样的。

如何在Kotlin中将列表转换为地图的答案? 只显示独特的价值(而不是像我的重复)。

我在Kotlin尝试了associateBy

  data class Combine(val alpha: String, val num: Int) val list = arrayListOf(Combine("a", 1), Combine("b", 2), Combine("c", 3), Combine("a", 4)) val mapOfList = list.associateBy ( {it.alpha}, {it.num} ) println(mapOfList) 

但似乎没有工作。 我怎么能在Kotlin做到这一点?

 fun main(args: Array) { data class Combine(val alpha: String, val num: Int) val list = arrayListOf(Combine("a", 1), Combine("b", 2), Combine("c", 3), Combine("a", 4)) val mapOfList = list.associateBy ( {it.alpha}, {it.num} ) println(mapOfList) val changed = list .groupBy ({ it.alpha }, {it.num}) println(changed) } 

产量

 {a=4, b=2, c=3} {a=[1, 4], b=[2], c=[3]} 

怎么运行的

  • 首先它需要清单
  • 它将Combine按他们的Alpha值分组到他们的num

您可以alpha对列表进行分组,然后将值映射到List

 data class Combine(val alpha: String, val num: Int) val list = arrayListOf(Combine("a", 1), Combine("b", 2), Combine("c", 3), Combine("a", 4)) val mapOfList = list .groupBy { it.alpha } .mapValues { it.value.map { it.num } } println(mapOfList)