-
流的终端操作会从流的流水线生成结果,其结果可以是任何不是流的值
如: List,Integer
-
流进行了终端操作后不能再使用.
流的终端操作也涉及到很多种方法,下面我们分为3大类进行介绍
1.匹配与查找
-
allMatch()
//检查是否匹配所有元素
-
anyMatch()
//检查是否至少有一个元素匹配
-
noneMatch()
//检查是否没有元素匹配
-
findFirst()
//返回第一个元素
-
findAny()
//返回任意元素
-
count()
//返回流中元素的个数
-
max()
//返回流中的最大元素
-
min()
/.返回流中的最小元素
-
forEach()
//内部迭代,相当于帮我们写了迭代器
2.规约
规约可以通俗的理解为将所有的元素求和
这里也涉及到两个方法,下面我们通过示例一一介绍
-
reduce()
//将流中的元素反复结合起来,得到一个值,返回T
import java.util.Arrays; import java.util.List; public class Demo1 { public static void main(String[] args) { //计算0-10自然数的和 List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10); Integer sum = list.stream() .reduce(0,Integer::sum); System.out.println(sum); } }
3.收集
-
collection(Collector c) //将流转换为其他形式,接收一个Collector接口的实现,用于给Stream中的元素做汇总的方法
-
Collector接口中方法的实现决定了如何对流执行收集的操作(如收集到List,Set,Map),另外,Collections实用类提供了很多静态方法,可方便地创建常见收集器实例
import java.util.Arrays; import java.util.List; public class Demo1 { public static void main(String[] args) { //查找工资大于6000的员工,这里使用一个List或Set List<Employee> employees1 = EmployeeDate.getEmployees(); List<Employee> employeeList = employees.stream().filter(e -> e.getSalary() > 6000).collect(Collectors.toList()); employeeList.forEach(System.out::println); } }
-