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

Posted 爆米花9958

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Stream skip()跳过前N个子元素的主要内容,如果未能解决你的问题,请参考以下文章

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

JDK1.8新特性——Stream

Java8新特性----Stream

stream — 筛选与切片

Java必修课图说Stream中的skip()和limit()方法及组合使用

绊倒人stream怎么操作