Stream中skip()和limit()方法及组合使用

乔欣 Java经验 发布时间:2023-03-12 22:42:35 阅读数:11632 1
下文笔者讲述Stream中skip()和limit()方法简介说明,如下所示

skip()和limit()方法简介

skip(n):
  跳过前面n个元素,并返回新的流
limit(n): 
  只取前面n个元素,并返回新的流

skip方法的示例

list<Integer> result = Stream.of(1, 2, 3, 4, 5, 6)
  .skip(4)
  .collect(Collectors.toList());
List<Integer> expected = asList(5, 6);
assertEquals(expected, result);

方法skip()参数n的四种情况

1.当n<0时,抛IllegalArgumentException异常

2.当n=0时,直接返回原流

3.当0<n<length时,跳过n个元素后,返回含有剩下的元素的流;

4.当n>=length时,跳过所有元素,返回空流

limit()方法

limit()方法
它是用于限制流中元素的个数
即取前n个元素,返回新的流
List<Integer> result = Stream.of(1, 2, 3, 4, 5, 6)
  .limit(4)
  .collect(Collectors.toList());
List<Integer> expected = asList(1, 2, 3, 4);
assertEquals(expected, result);

方法limit()参数n四种情况

1.当n<0时,抛IllegalArgumentException异常

2.当n=0时,不取元素,返回空流

3.当0<n<length时,取前n个元素,返回新的流

4.当n>=length时,取所有元素,返回原来流

skip和limit实现与subList类似功能

 
List<Integer> list = asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
List<Integer> expected = list.subList(3, 7);

List<Integer> result = list.stream()
  .skip(3)
  .limit(7 - 3)
  .collect(Collectors.toList());
assertEquals(expected, result);

将subList(startIndex, endIndex)转换成skip(startIndex).limit(endIndex - startIndex)。

Skip和limit实现分页

 
int pageSize = 10;
int pageIndex = 7;

List<Integer> expected = asList(61, 62, 63, 64, 65, 66, 67, 68, 69, 70);
List<Integer> result = Stream.iterate(1, i -> i + 1)
  .skip((pageIndex - 1) * pageSize)
  .limit(pageSize)
  .collect(Collectors.toList());

assertEquals(expected, result);
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202303/16786322046021.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者