假设我有一个
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/