【发布时间】:2017-04-26 12:57:25
【问题描述】:
我有一个相当大的集合,我想迭代并找出该集合是否包含多个特定数字的实例。由于集合很大,我想提前退出,即不遍历完整列表。
我有一段看起来很脏的代码,它以非函数式编程方式执行此操作。但是,我无法找到执行此操作的函数式编程方式(在 Groovy 或 Scala 中),因为我需要同时做两件事。
- 累积状态
- 提前退出
“累积状态”可以使用 Groovy/Scala 中的“注入”或“折叠”方法完成,但无法提前退出这些方法。原始的常规代码如下。有什么想法吗?
def collection = [1,2,3,2,4,6,0,65,... 1 million more numbers]
def n = 2
boolean foundMoreThanOnce(List<Integer> collection, Integer n) {
def foundCount = 0
for(Integer i : collection) {
if(i == n) {
foundCount = foundCount + 1
}
if(foundCount > 1) {
return true
}
}
return false
}
print foundMoreThanOnce(collection, n)
【问题讨论】:
标签: scala groovy functional-programming