源码仅用于测试,请勿用于商用。源码来自网络,如有侵权,请联系我下架。
Java8 Stream Api 中的skip和limit操作

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 时,打印了 1234n=8 时,打印了所有元素。感觉跟 mysq的分页有异曲同工之妙。

4. 区别

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

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

5. 总结

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

阅读全文
资源下载
下载价格免费
使用用途仅限于测试、实验、研究为目的,禁止用于一切商业运营,本团队不承担使用者在使用过程中的任何违法行为负责所有源码请自测!不保证你源码完整性有效性所有源码都是全网搜集
原文链接:https://bcbccb.cn/4441.html,转载请注明出处。 免责声明:本资源并未取得原始权利人的授权,不可商用,仅可用于学习分析底层代码,CSS等,禁止用于商业行为。如因擅自商用引起的相关纠纷及法律责任,由使用人全部承担。支持正版,人人有责,请于下载后24小时内删除,谢谢支持!
1

评论0

完整版APP区块链游戏源码,trx投注竞猜游戏,trx下注游戏,前端uinapp
完整版APP区块链游戏源码,trx投注竞猜游戏,trx下注游戏,前端uinapp
1分钟前 有人购买 去瞅瞅看

站点公告

本站所提供的源码(主题/插件/应用源码)等资源仅供学习交流

禁止使用商业用途,否则产生的一切后果将由下载用户自行承担!

有部分资源为网上收集或仿制而来,若侵犯了您的合法权益,请来信通知我们.

目前会员大酬宾,终身会员现价299金币。近期调整价格

赶快加入,机会不等人! 立即参与

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录

zh_CNChinese