Java Stream skip()方法示例

x33g5p2x  于2022-09-24 转载在 Java  
字(2.0k)|赞(0)|评价(0)|浏览(284)

本文将介绍 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 是有状态的中间操作。

有状态的中间操作
中间操作分为无状态操作和有状态操作。在处理诸如 filtermap 之类的新元素时,无状态操作不会保留先前看到的元素的状态。在处理新元素(例如 skiplimit 方法)时,有状态操作可能会合并来自先前看到的元素的状态。

skip() 示例

查找 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()与 Limt()

skip 方法从开始丢弃给定数量的元素,并返回新的流,其中元素的剩余数量一直到最后一个元素,而 limit 方法从第一个元素开始返回给定数量的元素的新流。 skiplimit 都是中间操作并返回新流。
示例 1:
这里我们有一个整数列表。我们将在源流上运行 limitskip。查看结果。
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。

相关文章

微信公众号

最新文章

更多