【发布时间】:2018-09-09 00:22:54
【问题描述】:
我似乎找不到可用于 Iterables 的 Kotlins groupingBy 方法的简单 Scala 等效方法,它的作用类似于 Scalas groupBy,但并不急于创建列表。相反,它会创建一个“分组”表示以供以后使用。
例如,处理小数组,groupBy 就足够了:
List(1, 2, 3, 4).groupBy(_ < 3) //Map(false -> List(3, 4), true -> List(1, 2))
但是对于大型或无限的集合,如果我对不急切地操作并且只对某些结果感兴趣,它将不成立。
编辑:抱歉,该示例没有完全表达groupingBy 的工作原理。如果输入的长度为n,它将输入划分为可能的1 到n 组。在 kotlin 你写:
listOf(1, 2, 3, 4).groupingBy(it % 3).eachCount() // { 0=1, 1=2, 2=1 }
你会得到一个中间 Grouping 对象,你可以在其上应用终止操作,如 eachCount,它会生成结果图。
【问题讨论】:
-
您需要地图作为结果吗?在 Scala 中使用无限集合的唯一方法是使用 Stream 或 Iterator。
-
是的,我需要一张地图。我已经编辑了我的问题以展示 kotlins
groupingBy的扩展功能。
标签: scala collections kotlin grouping