gpt4 book ai didi

scala - Scala相当于Kotlins分组

转载 作者:行者123 更新时间:2023-12-02 13:22:31 25 4
gpt4 key购买 nike

我似乎找不到适用于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,则它将输入分为潜在的 1n组。在kotlin中,您写道:
listOf(1, 2, 3, 4).groupingBy(it % 3).eachCount() // { 0=1, 1=2, 2=1 }

然后,您将获得一个中间 Grouping对象,可以在该对象上应用终止操作(例如 eachCount)来生成结果图。

最佳答案

可以分两步完成。

val (t,f) = List(1, 2, 3, 4).partition(_ < 3)
val m = Map(true -> t, false -> f)
//Map[Boolean,List[Int]] = Map(true -> List(1, 2), false -> List(3, 4))

它也适用于延迟收集。
val (t,f) = Iterator.from(1).partition(_%3<1)
val m = Map(true -> t, false -> f)
//Map[Boolean,Iterator[Int]] = Map(true -> non-empty iterator, false -> non-empty iterator)

m(true).take(12).toList
//res0: List[Int] = List(3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36)

m(false).take(12).toList
//res1: List[Int] = List(1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17)

关于scala - Scala相当于Kotlins分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com