我想要遍历一个
我想要在一个循环中进行迭代是因为我有一些额外的代码需要测量进度,这需要在一个循环中完成。
这种方法通常不起作用,因为它可能随意混合两个
Set
的所有元素,然后再遍历另一个Set
的所有元素,使用同一个循环。(我不关心重复元素,因为我知道这两个Set
是不相交的。)我想要在一个循环中进行迭代是因为我有一些额外的代码需要测量进度,这需要在一个循环中完成。
这种方法通常不起作用,因为它可能随意混合两个
Set
:for(x <- firstSet ++ secondSet) {
...
}
这个方法能够运行,但是它会在内存中构建3个中间Seq
,因此在时间和空间的使用上非常低效:
for(x <- firstSet.toSeq ++ secondSet.toSeq) {
...
}
++
时,这将把两个集合都转换为长的List
,因此它并不是真正高效的。不确定为什么@huynhjl删除了他的答案,但是作为参考,他建议使用额外的生成器,形式为for (set <- List(firstSet, secondSet); x <- set) { ... }
,这似乎是更有效的方法。 - Luigi Plingescala.collection.Iterator
中++
的实现。 - Robin Green