Stream流和Lambad表达式
Stream流
Stream流有一些特性:
1 .Stream流不是一种数据结构,不保存数据,它只是在原数据集上定义了一组操作。
2.这些操作是惰性的,即每当访问到流中的一个元素,才会在此元素上执行这一系列操作。
3.Stream不保存数据,故每个Stream流只能使用一次。
Stream 的操作分为三种:
1.创建stream流。
2.中间操作。
3.终止操作。
创建stream
1)Collection接口的stream()或parallelStream()方法
2)Arrays.stream(array)
3)静态的Stream.iterate()方法生成无限流,接受一个种子值以及一个迭代函数
4)静态的Stream.generate()方法生成无限流,接受一个不包含引元的函数
中间操作
1)filter——接收 Lambda , 从流中排除某些元素。
2)limit——截断流,使其元素不超过给定数量。
3)skip(n) —— 跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流。与 limit(n) 互补
4)distinct——筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素
5)sor