Steam流
Steam流是java 8 版本新增的,配合同版本出现的Lambda表达式 ,给我们操作集合(Collection)提供了极大的便利。Steam流Steam流
Steam流是什么?
Java 中可以使用 java.util.Stream 对一个集合(实现了java.util.Collection接口的类)做各种操作,例如:求和、过滤、排序等等。这些操作可能是中间操作——返回一个 Stream 流,或者是终端操作——返回一个结果。
同时,流操作不会影响原来的集合,也不会存储数据,可以简单认为,流操作是把集合中的一个元素逐个复制放到一个首尾相接的流动的容器中进行相应的操作,操作结束,容器消失;下一次操作再重复上述过程,这也就是说Steam是延迟执行的。
Stream 流支持同步执行,也支持并发执行。如果我们直接获取 stream 流,得到的是同步执行的 stream 流;如果调用方法 parallelStream,则得到一个可以并发执行的 Stream 流。可以说Stream 流极大的提高开发效率,也可以使用它写出更加简洁明了的代码。
需要注意的是:Map不支持 Stream 流,但是它的 Key 和 Value 支持,因为它们实现了 Set 接口。
好处
它可以大幅减少我们的代码量,并且会返回新的列表,不会改变原来的列表。如果不用,写法肯定是for循环套for循环,再new新的list来回转,非常麻