kotlin - 如何使用不变变换在Kotlin中反转 map

标签 kotlin

我有一个下面的Kotlin映射,我想反转该映射,对于重复的新键,该值将附加到列表中。

val map = Map(1 to 111, 2 to 222, 3 to 111)

转换后,结果图是
Map(111 to List(1,3), 222 to 2)

PS:我确实通过创建可变映射并迭代现有映射来制定出一种实现方法。但我更多地寻找一种不变的方法。

最佳答案

您可以按每个条目的值选择键将 map 条目分组:

    val map = mapOf(1 to 111, 2 to 222, 3 to 111)

    val reversed = map.entries.groupBy({ it.value }, { it.key })

    println(reversed) // prints: {111=[1, 3], 222=[2]}

关于kotlin - 如何使用不变变换在Kotlin中反转 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52232067/

相关文章:

android - Unresolved reference - Activity 无法识别 android studio v4 中的合成导入

android - RecyclerView SnapHelper 无法显示第一个/最后一个项目

android - 如何以编程方式将背景颜色从 android.support.design 更改为 MaterialButton

java - 如何像此应用程序中那样保持 ImageView 的纵横比? [Android,ImageView,长宽比,ScrollView]

kotlin - Companion.foo 在伴生对象中有什么区别?

android - "Extension with name ' android ' does not exist"将 Kotlin 添加到 Android 项目时出错

android - 使用合并标记时,复合 View 不可见

spring - Kotlin 无法在使用 @Configuration @EnableWebMvc 注释的类中创建 @Autowired 字段

kotlin - 在 Kotlin 中将大型 Inputstream 写入文件

android - Kotlin - 在运行函数之前等待多个 LiveData 被观察