我有一个列表如下 {(" a",1),(" b",2),(" c",3),(" a", 4)}
我想将其转换为列表地图,如下所示 {(" a"(1,4)),(" b",(2)),(" c",(3)))}
即。对于a,我们有一个1和4的列表,因为键是相同的。
答案 How to convert List to Map in 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做到这一点?
答案 0 :(得分:11)
fun main(args: Array<String>) {
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
s的alpha值分组为num
值答案 1 :(得分:5)
您可以先按alpha
对列表进行分组,然后将值映射到List<Int>
:
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)