Java 8 Stream Api 中的 skip 和 limit 操作

【北京】 IT技术人员面对面试、跳槽、升职等问题,如何快速成长,获得大厂入门资格和升职加薪的筹码?与大厂技术大牛面对面交流,解答你的疑惑。《从职场小白到技术总监成长之路:我的职场焦虑与救赎》活动链接:码客

恭喜fpx,新王登基,lpl*b 我们是冠军

在这里插入图片描述

1. 前言

Java 8 Stream API 中的skip()limit()方法具有类似的作用。它们都是对流进行裁剪的中间方法。今天我们来探讨一下这两个方法。

2. skip()

skip(lang n) 是一个跳过前 n 个元素的中间流操作。我们编写一个简单的方法来进行skip操作,将流剩下的元素打印出来。

  public static void skip(long n) {
        Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5, 6);
        integerStream.skip(n).forEach(integer -> System.out.println("integer = " + integer));
    }

经过测试,当 n < 0 时直接抛出了 IllegalArgumentException 异常。毕竟要跳过一些元素,跟下象棋一个道理不能后退只能向前。当 n=0 时,原封不动完璧归赵。这种操作一般我们不会主动搞,没有意义。当 n=4 时,打印了 56 ,由此可推断当我们取值大于等于流的大小时肯定什么也没有了,对于流来说肯定是个空流。经过检验确实count=0

也就是说 skip(long n) 方法跳过前 n (非负)个元素,返回剩下的流,有可能为空流。

3. limit()

limit(long maxsize) 我们也如法炮制:

public static void limit(long maxsize) {
    Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5, 6);
     integerStream.limit( maxsize).forEach(integer -> System.out.println("integer = " + integer));
}

n < 0 时直接抛出了 IllegalArgumentException 异常。当 n=0 时,返回一个空流。当 n=4 时,打印了 1234 。 n=8 时,打印了所有元素。感觉跟 mysq的分页有异曲同工之妙。

4. 区别

这两个方法都是截取了流。但是它们有一些区别 skip 操作必须时刻监测流中元素的状态。才能判断是否需要丢弃。所以 skip 属于状态操作。

limit 只关心截取的是不是其参数 maxsize (最大区间值),其它毫不关心。一旦达到就立马中断操作返回流。所以 limit 属于一个中断操作。

5. 总结

今天对Java Stream API 的 skip()limit()方法进行了探讨。不知道你会想到在什么场景下会分别用到它们呢,不妨留言告诉我。

(想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程。完全免费哦!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值