流的使用一般包括三件事:
1)一个数据源(如集合)来执行一个查询;
2)一个中间操作链,形成一条流的流水线;
3)一个终端操作,执行流水线,并能生成结果。
流的流水线背后的理念类似于构建器模式。
在构建器模式中有一个调用链用来设置一套配置(对流来说这就是一一个中间操作链),接着是调用built方法(对流来说就是终端操作)。
流让你从外部迭代转向内部迭代,这样就用不着显式地管理数据集合的迭代(外部迭代)了。
你可以使用支持filter和collect操作的Stream API (内部迭代)管理对集合数据的迭代。
你只需要将筛选行为作为参数传递给filter方法就行了。
这种处理数据的方式很有用,因为你让Stream API管理如何处理数据。
这样Stream API就可以在背后进行多种优化。
此外,使用内部迭代的话,Stream API可以决定并行运行你的代码。
这要是用外部迭代的话就办不到了,因为你只能用单一线程挨个迭代。