末端方法
末端方法是对流的最终操作。当对某个 Stream 执行末端方法后,该流将会被"消耗" 且不再可用。换句话说就是末端方法一旦调用后就会关闭流,再不能对流进行操作,否则会抛出异常。
| 方法 | 功能 | 
|---|---|
| forEach(Consumer action) | 遍历流中所有元素,对每个元素执行 action | 
| toArray() | 将流中所有元素转换为一个数组 | 
| reduce() | 该方法有三个重载的版本,都用于通过某种操作来合并流中的元素 | 
| min() | 返回流中所有元素的最小值 | 
| max() | 返回流中所有元素的最大值 | 
| count() | 返回流中所有元素的数量 | 
| anyMatch(Predicate predicate) | 判断流中是否至少包含一个元素符合 Predicate 条件 | 
| allMatch(Predicate predicate) | 判断流中是否每个元素都符合 Predicate 条件 | 
| noneMatch(Predicate predicate) | 判断流中是否所有元素都不符合 Predicate 条件 | 
| findFirst() | 返回流中的第一个元素 | 
| findAny() | 返回流中的任意一个元素 | 
/***末端方法练习*/
public class StreamDemo4 {public static void main(String[] args) {List<String> list = Arrays.asList("张麻子","师爷","黄老爷","李东方","阿廖沙");Stream<String> stream = list.stream();//流转数组Object[] objects = stream.toArray();List<Integer> list1 = Arrays.asList(8,7,6,1,3);Integer reduce = list1.stream().reduce(6, BinaryOperator.maxBy((o1, o2) -> {return o1 - o2;}));//获取最大值Optional<Integer> max = list1.stream().max(Integer::compareTo);//获取最小值Optional<Integer> min = list1.stream().min(Integer::compareTo);//统计元素个数long count = list1.stream().count();System.out.println(count);System.out.println(max.get());System.out.println(min.get());
Optional<String> first = list.stream().findFirst();System.out.println(first.get());//返回第一个元素Optional<String> any = list.stream().findAny();System.out.println(any.get());}
} 
/*** 末端方法练习*/
public class StreamDemo5 {public static void main(String[] args) {List<String> list = Arrays.asList("张麻子","师爷","黄老爷","李东方","阿廖沙","让子弹飞");//只要有1个元素满足条件即可boolean b = list.stream().anyMatch(t -> {return t.length() > 3;});//所有的元素都满足条件时才会返回true,否则返回falseboolean c = list.stream().allMatch(t -> {return t.length() >= 2;});//所有元素都不满足于条件时才会返回true,只要有1个满足条件就会返回falseboolean d = list.stream().noneMatch(t->{return t.length()>4;});System.out.println(b);System.out.println(c);System.out.println(d);}
}