本文将介绍 Java Stream.skip
方法示例。在Skip流的第一个给定元素后,skip
方法返回由该流的剩余元素组成的流。
从 Java 文档中找到 skip
方法声明。
Stream<T> skip(long n)
**参数:**传递要Skip的前导元素的数量。
返回: 该方法返回一个Skip元素的新流。
异常: 如果我们传递负数,它会抛出 IllegalArgumentException
。
1.skip
方法用于从源流创建一个新流,从开始时Skip给定数量的元素。
2.skip
方法对于有序并行管道的成本很高,尤其是对于较大数量的 n。
3.skip
方法是顺序流管道的廉价操作。
4. 如果要Skip的元素数 n 等于或大于流中的元素数,则输出将为空流。
5.skip
是有状态的中间操作。
有状态的中间操作
中间操作分为无状态操作和有状态操作。在处理诸如 filter
和 map
之类的新元素时,无状态操作不会保留先前看到的元素的状态。在处理新元素(例如 skip
和 limit
方法)时,有状态操作可能会合并来自先前看到的元素的状态。
查找 skip
方法的一些示例。
示例 1:
在这个例子中,我们有一个整数元素流,我们使用 skip
方法来获取新的流,其中前三个元素将被丢弃。
Stream.of(10, 20, 30, 40, 50)
.skip(3)
.forEach(System.out::println);
输出将是 40、50。
示例 2:
在这个例子中,我们有一个整数流。首先我们过滤它并提取偶数,然后在最终结果中Skip两个。
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:
这里我们有一个字母流。首先我们对其进行排序,然后Skip 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:
在此示例中,我们将Skip比流中元素数量更多的元素。输出将是空流。
Stream.of("A", "B", "C", "D")
.skip(5)
.forEach(System.out::println);
这将不打印任何内容,因为Skip后流中没有元素。
skip
方法从开始丢弃给定数量的元素,并返回新的流,其中元素的剩余数量一直到最后一个元素,而 limit
方法从第一个元素开始返回给定数量的元素的新流。 skip
和 limit
都是中间操作并返回新流。
示例 1:
这里我们有一个整数列表。我们将在源流上运行 limit
和 skip
。查看结果。
SkipLimitDemo.java
package com.concretepage;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class SkipLimitDemo {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);
List<Integer> afterLimit = list.stream().limit(4).collect(Collectors.toList());
List<Integer> afterSkip = list.stream().skip(4).collect(Collectors.toList());
System.out.println("Limit: " + afterLimit);
System.out.println("Skip: " + afterSkip);
}
}
输出
Limit: [1, 2, 3, 4]
Skip: [5, 6, 7, 8]
示例 2:
在此示例中,我们将首先在源元素上运行 skip
,然后在 skip
方法返回的流上运行 limit
。
Stream.of(1,2,3,4,5,6,7,8)
.skip(2) //3,4,5,6,7,8
.limit(2) //3,4
.forEach(System.out::println);
输出将是 3,4。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.concretepage.com/java/java-8/java-stream-skip
内容来源于网络,如有侵权,请联系作者删除!