Stream流的使用
流的使用将分为终端操作和中间操作进行介绍
中间操作
filter筛选
List<Integer> integerList = Arrays.asList(1, 1, 2, 3, 4, 5); Stream<Integer> stream = integerList.stream().filter(i -> i > 3);
通过使用filter方法进行条件筛选,filter的方法参数为一个条件
distinct去除重复元素
List<Integer> integerList = Arrays.asList(1, 1, 2, 3, 4, 5); Stream<Integer> stream = integerList.stream().distinct();
limit返回指定流个数
1 List<Integer> integerList = Arrays.asList(1, 1, 2, 3, 4, 5); 2 Stream<Integer> stream = integerList.stream().limit(3);
通过limit方法指定返回流的个数,limit的参数值必须>=0,否则将会抛出异常
skip跳过流中的元素
1 List<Integer> integerList = Arrays.asList(1, 1, 2, 3, 4, 5); 2 Stream<Integer> stream = integerList.stream().skip(2);
通过skip方法跳过流中的元素,上述例子跳过前两个元素,所以打印结果为2,3,4,5,skip的参数值必须>=0,否则将会抛出异常
终端操作
统计流中元素个数
1.通过count
1 List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5); 2 Long result = integerList.stream().count();
2.通过counting
1 List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5); 2 Long result = integerList.stream().collect(counting());
查找
提供了两种查找方式
1.findFirst查找第一个
1 List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5); 2 Optional<Integer> result = integerList.stream().filter(i -> i > 3).findFirst();
2.findAny随机查找一个
1 List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5); 2 Optional<Integer> result = integerList.stream().filter(i -> i > 3).findAny();
通过findAny方法查找到其中一个大于三的元素并打印,因为内部进行优化的原因,当找到第一个满足大于三的元素时就结束,该方法结果和findFirst方法结果一样。提供findAny方法是为了更好的利用并行流,findFirst方法在并行上限制更多

浙公网安备 33010602011771号