认识
在java.util.stream util包下的新增API,可以用于操作集合或者数组的数据。
功能强大(提供了很多结合Lambda的API),性能高效(有很多优化),代码简洁(Lambda),可读性好。
传统方案

用Sream流
把stream看成一个传送带,上面有集合中的东西。
新方法只需要一行。

步骤:1.获取集合或数组的Stream流2.调用流的各种方法
获取Stream流

T代表任意类型。…代表可以给一个,n个,不给
甚至可以给数组
集合Connection

Map



可以给一个参数,n个参数,甚至不给,或者给一个数组。


注意这里可以去重复是因为Double已经重写了对象的hasCode和equals方法

这里把原来流中的东西,用s代替映射为“加10分后:”+(s+10)这一串。如下打印


下图中第三行用Object的原因如上图第一行这两个都必须是T或者T的子类。s1是String流,s2是整形流,因此这里用Object

终结方法

操作对象


会打印出工资大于一万五的



利用Optional类中的get方法

收集Stream流
要收集到集合或数组中


收集到List

收集到Set
注意一个流只能收集一次。
那么我们如果想把一个流收集到list里面以后,再收集到set里面怎么办。
1.把收集好的list倒进去

2.创建一个新流

收集到数组

收集到Map
收集到Map时候与前面不同的是,需要弄清楚哪个是值,哪个是键


前一个匿名内部类返回键,后一个匿名内部类返回值。
化简

再根据特殊类的方法引用继续化简

