gpt4 book ai didi

scala - 如何 groupBy 迭代器而不将其转换为 Scala 中的列表?

转载 作者:行者123 更新时间:2023-12-03 17:06:46 27 4
gpt4 key购买 nike

假设我想 groupBy在迭代器上,编译器要求“value groupBy is not a member of Iterator[Int]”。一种方法是将迭代器转换为我想避免的列表。我想做groupBy这样输入是 Iterator[A]和输出是 Map[B, Iterator[A]] .这样只有在访问元素的那部分时才加载迭代器的部分,而不是将整个列表加载到内存中。我也知道可能的键集,所以我可以判断一个特定的键是否存在。

def groupBy(iter: Iterator[A], f: fun(A)->B): Map[B, Iterator[A]] = {
.........
}

最佳答案

我认为如果不将结果存储在内存中,这是不可行的(在这种情况下,切换到列表会容易得多)。 Iterator意味着您只能对整个集合进行一次传递。

例如,假设您有一个序列 1 2 3 4 5 6你想groupBy奇偶数:

groupBy(it, v => v % 2 == 0)

然后你可以用 true 查询结果和 false得到一个迭代器。如果您将这两个迭代器中的一个循环到最后,您将无法为另一个迭代器做同样的事情(因为您无法在 Scala 中重置迭代器),那么问题就来了。

如果元素按照您在 groupBy 中使用的相同规则进行排序,这将是可行的。 .

关于scala - 如何 groupBy 迭代器而不将其转换为 Scala 中的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29427059/

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