kotlin - 按键列表分组( Kotlin )

标签 kotlin grouping

假设我有一个

class Question(val tags:List<String>, val text:String)

其中(显然)除其他属性外还具有多个标签。

我想将多个Question实例转换为Question映射的(单个!)标签,例如:Map<String,List<Question>>

我怎么做?一个简单的groupBy { it.tags }提供了一个Map<List<String>,List<Question>>

最佳答案

一个通用的扩展功能,正如我几次要求的那样:

fun <T, K> Iterable<T>.groupByMany(
    keyExtractor: (T) -> Iterable<K>
): Map<K, List<T>> = mutableMapOf<K, MutableList<T>>()
    .also { grouping ->
        forEach { item ->
            keyExtractor(item).forEach { key ->
                grouping.computeIfAbsent(key) { mutableListOf() }.add(item)
            }
        }
    }

用法:
val byTag = questions.groupByMany { it.tags }

关于kotlin - 按键列表分组( Kotlin ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59749896/

相关文章:

intellij-idea - 是否可以使用JDK 7运行Kotlin等级插件

properties - 如何使用 Kotlin 绑定(bind)属性值?

python - 将包含多行数据的 .txt 转换为 .csv

mysql - 计算与 MySQL 中的多个条件中的每一个匹配的行

grouping - 将新组添加到具有现有组的 SSRS tablix?

PHP SimpleXML 按元素类型分组

Kotlin Flow 仅每秒收集一次

java - 在 Android 上使用 SQLDelight JVM 驱动程序

c++ - 分组控件

android - Android-读/写到可移动SD卡