【Java必修课】图说Stream中的skip()和limit()方法及组合使用

如题所述

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

skip()方法用于跳过前面n个元素,然后再返回新的流。方法skip()的参数n的四种情况是:(1)当n<0时,抛IllegalArgumentException异常;(2)当n=0时,相当没有跳过任何元素,原封不动、完璧归赵;(3)当0<n<length时,跳过前n个元素;(4)当n>=length时,跳过所有元素,返回空流。

limit()方法用于限制流中元素的个数,即取前n个元素,返回新的流。方法limit()的参数n的四种情况是:(1)当n<0时,抛IllegalArgumentException异常;(2)当n=0时,不取元素,返回空流;(3)当0<n<length时,取前n个元素;(4)当n>=length时,取所有元素,原封不动、完璧归赵。

对于无限流,skip()和limit()表现出了极大的差异。skip()则不行,不管你跳过了前面多少个元素,总还是会有源源不断的元素过来,无法收敛。而limit()是可以将无限流转化为有限流的,所以我们也可以认为它是一个短路操作。

除了两者各自有各自的功能外,我们通过组合使用,可以实现其它功能。例如,可以将集合类如List的subList()方法转换为skip(startIndex).limit(endIndex - startIndex)。还可以通过组合使用skip()和limit()进行分页。

在组合应用中,需要注意的是,如果Stream过大或是无限流,小心skip()会有性能问题。

Java必修课包括:Java 8 Streams的简单介绍与入门、Java 8基本类型的Stream、如何创建和初始化一个HashMap、Java双大括号{}的初始化、Java 8中map()与flatMap()在Optional和Stream中的区别等。Java实例包括:使用Thumbnailator生成缩略图、统计String单词数的三种方法、使用正则统计英文文章中的高频词汇等。MongoDB相关知识有:用Docker安装一个MongoDB最新版玩玩、2019年MongoDB中文社区广州大会,干货满满的分享活动等。其他领域有:如何使用优秀的加密库Jasypt来保护你的敏感信息、Spring的定时任务注解@Scheduled原来如此简单等。

欢迎关注公众号,将持续为你更新更多知识。欢迎加博主微信,做一个点赞之友。多读书,多分享;多写作,多整理。Springboot系列文章有:Springboot整合邮件服务(HTML/附件/模板-QQ、网易)、Springboot整合Jasypt、Springboot Admin监控微服务应用等。
温馨提示:答案为网友推荐,仅供参考
相似回答