Stream中skip()和limit()方法及组合使用
下文笔者讲述Stream中skip()和limit()方法简介说明,如下所示
它是用于限制流中元素的个数
即取前n个元素,返回新的流
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);
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。