文
章
目
录
章
目
录
Stream的skip(n)方法用于从给定的Stream中跳过前n个元素。
skip()方法返回一个新的Stream,由原始Stream中丢弃前n个元素后的剩余元素组成。
1.Stream skip() 方法
1. 1方法语法:
Stream<T> skip(long n)
n是丢弃的领先元素的数量,返回从原始流中选择的元素的新的Stream。
该方法可能会在n为负数时抛出IllegalArgumentException。
1.2描述
- Stream skip()方法是状态中间操作。诸如distinct和sorted之类的状态操作在处理新元素时可能会结合以前看到的元素的状态。
- 返回一个流,该流包含在丢弃流的前n个元素之后流中的剩余元素。
- 如果流包含的元素数量少于n个,则返回一个空流。
- 通常,skip()是一种高效的操作,在有序的并行管道上可能非常低效,尤其是对于较大的n值。
- 使用无序的流源(例如generate(Supplier))或使用BaseStream.unordered()去除排序约束可能导致并行管道中skip()的速度大大提高。
- skip()按 encounter 顺序跳过流中的前n个元素。
2.Stream skip() 示例
在这个Java程序中,我们使用skip()方法从无限偶数流中跳过前5个偶数,然后将接下来的10个偶数收集到新的Stream中。
Stream<Integer> evenNumInfiniteStream = Stream.iterate(0, n -> n + 2);
List<Integer> newList = evenNumInfiniteStream
.skip(5)
.limit(10)
.collect(Collectors.toList());
System.out.println(newList); //[10, 12, 14, 16, 18, 20, 22, 24, 26, 28]
3.结论
在某些情况下,如果我们需要从Stream中获取元素,但首先需要跳过几个元素,则Stream的skip()方法非常有用。
事实上,skip()按encounter顺序返回元素,这使得它在正常的业务用例中非常有用。