末端方法
末端方法是对流的最终操作。当对某个 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);} }