我有一个列表如下{("a",1),("b",2),("c",3),("a",4)}
我想将它转换为列表地图,如下所示{("a"(1,4)),("b",(2)),("c",(3)))}
即对于a,我们有一个1和4的列表,因为键是相同的.
在回答 如何列出科特林到地图转换?只显示唯一值(而不是像我一样的重复值).
我associateBy在Kotlin 试过
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)
Run Code Online (Sandbox Code Playgroud)
但似乎没有用.我怎么能在Kotlin做到这一点?
jrt*_*ell 14
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)
}
Run Code Online (Sandbox Code Playgroud)
{a=4, b=2, c=3}
{a=[1, 4], b=[2], c=[3]}
Run Code Online (Sandbox Code Playgroud)
Combines的α值分组为它们的num值您可以先按列表对列表进行分组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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4096 次 |
| 最近记录: |