认识
在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时候与前面不同的是,需要弄清楚哪个是值,哪个是键
前一个匿名内部类返回键,后一个匿名内部类返回值。
化简
再根据特殊类的方法引用继续化简