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方法在并行上限制更多



posted @ 2021-11-22 14:41  蹉~跎  阅读(95)  评论(0)    收藏  举报