Stream skip()跳过前N个子元素

skip()方法跳过流的第一个给定的一些元素后,skip方法返回由该流的其余元素组成的流。

Java文档中skip方法声明

Stream<T> skip(long n)

参数: 传递要跳过的前导元素的数量。 

返回: 方法返回一个新的跳过元素的流。 

抛出: 如果我们传入负数,它抛出 IllegalArgumentException . 

1. skip方法用于从一开始跳过给定数量元素的源流创建新流。

2. skip方法对于有序的并行管道来说代价高昂,特别是对于大数量的 n . 

3. skip方法是顺序流管道的廉价操作。 

4. 如果要跳过的元素数 n 等于或大于流中的元素数,则输出将为空流。 

5.skip方法是有状态的中间操作。

有状态的中间操作 

中间操作分为无状态和有状态操作。 在处理filter和map等新元素时,无状态操作不会保留先前看到的元素的状态。在处理诸如skip和limit方法之类的新元素时,有状态操作可能包含以前看到的元素的状态。

示例1: 

在这个例子中我们有一个整数流元素,我们使用skip方法来获取新的流,其中前三个元素将被丢弃。

Stream.of(10, 20, 30, 40, 50) .skip(3) .forEach(System.out::println);

输出40,50。 

示例2: 

在这个例子中我们有一连串的整数。 首先我们筛选和提取偶数,然后在最后的结果中跳过前2个子元素.

Stream.of(11,12,13,14,15,16,17,18)
  .filter(n -> n % 2 == 0) //12,14,16,18
  .skip(2) //16,18
  .forEach(System.out::println); 

输出16,18。 

示例3: 

这里我们有一个字母。 首先我们对其进行排序,然后跳过前2 个元素。

Stream.of("C", "B", "D", "F", "E", "A")
 .sorted()// A,B,C,D,E,F
  .skip(2) //C,D,E,F
  .forEach(System.out::println); 

输出C, D, E, F。 

示例4: 

在这个例子中,我们将跳过比流中元素数量更多的元素。 输出将是空流。

Stream.of("A", "B", "C", "D") .skip(5) .forEach(System.out::println);

这不会打印任何内容,因为跳过后流中没有元素。

参考:

https://www.concretepage.com/java/java-8/java-stream-skip

https://blog.csdn.net/qq_31635851/article/details/111149866

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值