点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

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 时,打印了 5 和 6 ,由此可推断当我们取值大于等于流的大小时肯定什么也没有了,对于流来说肯定是个空流。经过检验确实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 时,打印了 1 、 2 、3 、 4 。 n=8 时,打印了所有元素。感觉跟 mysq 的分页有异曲同工之妙。

4. 区别

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

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

5. 总结

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

本文通过OpenWrite的Markdown转换工具发布

关注我,回复“加群”加入各种主题讨论群

  • 多个Java版本如何灵活切换和管理?

  • Spring 体系常用项目一览

  • 阿里规定超过三张表禁止JOIN,为啥?

  • RESTful 架构基础

  • 17 个方面,综合对比四大消息中间件

朕已阅 

Java 8 Stream Api 中的 skip 和 limit 操作相关推荐

  1. Java 8 Stream Api 中的 map和 flatMap 操作

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1.前言 Java 8  ...

  2. Java 8 Stream Api 中的 peek、map、foreach区别

    #1. 前言 我在Java8 Stream中讲述了 Java 8 Stream API 的一些内容.今天再看一下peek.map.foreach区别. 2. peek peek 操作接收的是一个 Co ...

  3. java8 stream to map_Java 8 Stream Api 中的 map和 flatMap 操作

    1.前言 Java 8 提供了非常好用的 Stream API ,可以很方便的操作集合.今天我们来探讨两个 Stream 中间操作 map 和 flatMap 2. map 操作 map 操作是将流中 ...

  4. java peek函数_Java 8 Stream Api 中的 peek 操作

    1. 前言 我在 Java 8 Stream API中的 map 和flatMap 中讲述了Java8 Stream API中 map 操作和 flatMap 操作的区别.然后有小伙伴告诉我 peek ...

  5. Java 8 Stream API详解--转

    原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java 8引入 ...

  6. Java 8 Stream API详解

    Java 8 Stream API详解 一.Stream API介绍 Java 8引入了全新的Stream API,此Stream与Java I/O包里的InputStream和OutputStrea ...

  7. java jdbc 回滚_java_详解Java的JDBC API中事务的提交和回滚,如果JDBC连接是在自动提交模式 - phpStudy...

    详解Java的JDBC API中事务的提交和回滚 如果JDBC连接是在自动提交模式下,它在默认情况下,那么每个SQL语句都是在其完成时提交到数据库. 这可能是对简单的应用程序,但有三个原因,你可能想关 ...

  8. java skip函数_【Java必修课】图说Stream中的skip()和limit()方法及组合使用

    1 简介 本文将讲解Java 8 Stream中的两个方法:skip()和limit().这两个方法是Stream很常用的,不仅各自会被高频使用,还可以组合出现,并能实现一些小功能,如subList和 ...

  9. stream去重_使用Java Stream API中DistinctBy删除重复数据

    Stream API提供distinct()方法,该方法基于数据Object类的equals()方法返回列表的不同元素.下面先做一个数据Object类,用来发现重复数据: public class L ...

最新文章

  1. (树上启发式合并)CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
  2. 用python处理excel表格_python用win32com处理excel表格
  3. C++二维数组按行遍历和按列遍历的区别
  4. MySQL联合索引原理_复合索引_组合索引_多列索引
  5. 并行计算——基础并行计算
  6. 红帽Redhat产品资料官方文档
  7. anaconda报错 ImportError: No module named conda.cli
  8. linux获取主板温度电压_主板供电
  9. java输出100以内质数(素数)合
  10. Python简单猜数字游戏
  11. 可以嵌入ppt的课堂点名器_宏大智慧课堂支招:孩子和学霸的差距,就在课上课下55分钟里...
  12. 中国雅虎首页改版彻底与口碑网剥离
  13. selenium配置Edge 全屏 更改ua 等
  14. 分时操作系统与实时操作系统的区别
  15. 新年,未知的开始---Created by 思贤泪自潸
  16. Spring Boot 通过 Mvc 扩展方便进行货币单位转换
  17. 【阿里云双11薅羊毛攻略】领限量手办详细步骤
  18. 双色球,抽奖是否中奖
  19. mysql 5.7版本异常Expression #1 of ORDER BY clause is not in GROUP BY clause and contains 处理
  20. ie调用java闪退_win7系统位数不兼容导致Ie浏览器频繁出现闪退的解决方法

热门文章

  1. libssh 认证绕过漏洞(cve-2018-10933)分析
  2. linux c dup dup2 重定向函数简介
  3. /usr/bin/ld: cannot find -lc错误原因及解决方法
  4. 比一比Nmap、Zmap、Masscan三种扫描工具
  5. zend studio自动添加文件注释和方法注释
  6. Windows驱动中的Crash回调
  7. 简述configure、pkg-config、pkg_config_path三者的关系
  8. Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建
  9. matlab中如何区分两幅图的亮度_高中历史教学中利用老地图设计习题的尝试
  10. mysql tgz 安装_不使用tgz压缩包安装mysql