java8新特性 Stream流
Stream是java8 API中添加的一个新的抽象,可以以一种声明的方式处理数据。
Stream是一个来自数据源的元素队列并支持聚合操作
Stream特点:
- 不会存储数据
- 不会修改数据源,会产生一个新的集合
- 不会立即执行,只有在需要结果的时候才执行
- 内部迭代,一旦遍历就会失效,想再次遍历必须重新生成
Stream可以通过集合和数组进行创建
集合产生流的两个方法:
stream():返回一个顺序流
parallelStram():返回一个并行流,内部是以多线程的方式执行操作。对流中数据处理有顺序要求的情况不适用
Steam数据中间操作:
map:该方法用于将每个元素映射到对应的结果上
filter:该方法用于过滤满足条件的元素
limit:用于减少stream的大小,比如限制10条就使用limit(10)
sorted:对stream进行排序
distinct:对元素进行去重
Stream数据最终操作:
map等中间操作方法得到的结果仍然是一个Stream,要转换成我们需要的类型,就需要进行最终的操作。
人不能两次踏进同一条河流
最终的操作会消耗掉流,所以在得到我们需要的类型之后,这个流我们就无法使用了
forEach:迭代流中的每个数据
count:统计流中的元素个数
collect:终结操作,将流转换成集合或者聚合元素
代码实现可以看这位大佬的