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)