代码之家  ›  专栏  ›  技术社区  ›  ryeguy

scala中迭代器和流之间的区别?

  •  53
  • ryeguy  · 技术社区  · 16 年前

    似乎迭代器和流都是懒惰的,并且允许您不断地将元素返回到您的心脏内容中。这两者有什么区别?

    2 回复  |  直到 12 年前
        1
  •  46
  •   Peter Mortensen Pieter Jan Bonestroo    12 年前

    河流 memoises 迭代器没有。您可以多次遍历同一个流,每次都得到相同的结果。另一方面,迭代器只能遍历一次。

        2
  •  19
  •   Community Mohan Dere    8 年前

    它们都是用于访问当前元素的构造,还有一个未知的剩余元素列表(懒惰的尾部)。

    Iterator 是一个命令式构造,您只能遍历一次。

    Stream 是一个函数构造。理论上,您可以多次遍历它(正如其他人提到的,它不会重新计算已经计算的部分),但在实践中,因为流是无限的或非常大的(这就是您首先使用它的原因),保持对整个流的引用没有多大意义(您很容易遇到内存不足)。

    一般来说,避免平庸对头脑是比较安全的。 河流 S.替代方案正在使用 EphemeralStream 使用弱引用或使用 Iteratees (另请参见 here something similiar .

    推荐文章