Java Lambdas和Streams:传递流

Vad*_*huk 6 java lambda lazy-evaluation guava java-stream

我有一个相当愚蠢的问题.我们都知道流可以有许多中间操作,但只有当我们调用一些终端操作时才进行实际计算.在没有长时间呼叫终端操作的情况下传递流是否常见?

让我解释一下我的意思.请考虑使用Iterator/Iterable的以下示例

  1. 使用缓冲读取器读取文件行,返回Iterator并使用next()覆盖调用 reader.readLine()
  2. 在上层使用guava的Iterators.transform来说小写的一切.
  3. 在上层使用另一个Iterator进行换行,可以通过昏迷从上游迭代器中拆分行并返回行中的单词元组
  4. 在final类中,迭代它并写入一些OutputStream来使用迭代器.

尽管如此,我从开始到结束都进行了完全懒惰的计算.没有使用中间集合等.

如果我想对流做同样的事情,我想我应该绕过Stream对象本身.这样做很常见吗?你能与我分享一些链接吗?