当前位置: 首页 > 知识库问答 >
问题:

静态编程语言:如何将列表转换为带有列表的映射?

夏星阑
2023-03-14

我的名单如下{(“a”,1),(“b”,2),(“c”,3),(“a”,4)}

我想将其转换为如下列表映射{("a"(1,4)),("b",(2)),("c",(3))}

也就是说,对于a,我们有一个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 中做到这一点?

共有2个答案

戚宏浚
2023-03-14

您可以先按< code>alpha对列表进行分组,然后将值映射到< code>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)
雷锋
2023-03-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)
}
{a=4, b=2, c=3}
{a=[1, 4], b=[2], c=[3]}
  • 首先它把名单
  • 它将组合s的alpha值到它们的num
 类似资料:
  • 函数应将类型擦除列表转换为,即

  • 我有两个单选组(组1和组2),分别包含3个单选按钮。我用这个准则把左右两列分开,各占一半。由于两个无线组是分开的,当用户单击组1时,我希望清除组2中的选定项(如果有)。任何想法都可以做到,因为我是由Kotlin编写的,所以我在stackoverflow ConstraintLayout、RadioGroup和RadioButton RadioGroup的两列中找到了一些示例,其中两列有十个单选按钮

  • 这两个代码片段有什么区别?以及如何决定使用哪一个? 和 有了这两个代码,我可以像这样通过索引访问它

  • 刚开始和Kotlin合作我很喜欢但是。。。我无法理解这种语言中的列表和数组。我对编程并不陌生,也不需要解释数组是什么。我不明白的是。 > 列表和数组之间有什么区别?它们看起来非常相似,您可以使用[索引]访问它们,也可以以几乎相同的方式使用它们。如果一个列表是不可变的,那么它们就更加相同了,所以。。。有什么区别?假设列表不是链表,它们都在O(1)访问时间内工作。 如果我使用列表;可变和不可变之间有什

  • 我有以下代码,希望使用Java8将列表转换为。 当我尝试将列表中的单个值映射为映射的键时,我得到了一个错误。

  • 我是Mapstruct的新手。我试图将列表转换为地图,我在网上搜索了很多,我有一些解决方案,比如它还没有在mapstruct中实现。如果有人能提供一些替代解决方案,我将很高兴。所有我希望转换映射如下: 现在是否可以使用MapStruct来实现?