利用java8 stream api 实现List集合分页获取工具
2017-11-12 15:04
1376 查看
package com.test.paging; import java.util.Arrays; import java.util.List; /** * @author kevin.chen * Date 2017/11/9 * Time 18:05 */ public class ListPagingTest { public static void main(String[] args) { List<String> list = Arrays.asList("ab", "ce", "re", "asf", "saf", "abc", "111"); PagingList<String> paging = new PagingList<>(list, 2); while (paging.hasNext()) { paging.next().forEach(System.out::println); } } }
自己利用java8 stream api 实现的List集合分页获取工具 分享给大家
package com.bestpay.account.core.common; import java.util.List; import java.util.stream.Collectors; /** * @author kevin.chen * Date 2017/11/9 * Time 18:11 * 对数据集合进分页获取 */ public class PagingList<T> { /** * 总页数 */ private int totalPage = 0; /** * 当前是第几页 */ private int curPageNo = 0; /** * 每页的大小 */ private int pageSize = 0; /** * 每页默认大小 */ private static final int DEFAULT_PAGE_SIZE = 500; private List<T> pageData = null; public PagingList(List<T> pageResult, int pageSize) { this.pageSize = pageSize; this.pageData = pageResult; init(pageResult, pageSize); } public PagingList(List<T> pageResult) { this(pageResult, DEFAULT_PAGE_SIZE); } private void init(List<T> pageResult, int pageSize) { if (pageSize <= 0) { throw new IllegalArgumentException("Paging size must be greater than zero."); } if (null == pageResult) { throw new NullPointerException("Paging resource list must be not null."); } if (pageResult.size() % pageSize > 0) { this.totalPage = (pageResult.size() / pageSize) + 1; } else { this.totalPage = pageResult.size() / pageSize; } } /** * 返回当前剩余页数 * * @return */ private int getSurplusPage() { if (pageData.size() % pageSize > 0) { return (pageData.size() / pageSize) + 1; } else { return pageData.size() / pageSize; } } /** * 返回是否还有下一页数据 * * @return */ public boolean hasNext() { return pageData.size() > 0; } /** * 获取分页后,总的页数 * * @return */ public int getTotalPage() { return totalPage; } public List<T> next() { List<T> pagingData = pageData.stream().limit(pageSize).collect(Collectors.toList()); pageData = pageData.stream().skip(pageSize).collect(Collectors.toList()); return pagingData; } /** * 返回当前页数 * * @return */ public int getCurPageNo() { return totalPage - getSurplusPage(); } }
相关文章推荐
- java实现List集合中获取上一个下一个元素
- java--利用集合List和Set实现简易版学生选课系统
- java8 stream初试,map排序,list去重,统计重复元素个数,获取map的key集合和value集合
- java 集合框架-利用LinkedList实现堆栈数据结构
- java中利用List的subList方法实现对List分页(简单易学)
- Java下List使用subList实现分页获取
- 利用微软翻译API做自己的翻译的工具(java)
- java 利用 LinkedList类实现 数据结构 栈.......
- 根据新浪天气API获取各地天气状况(Java实现)
- Java实现从IP和端口列表List<String>获取分离的IP和端口值
- Java中实现DataTable工具类,并利用其实现简单分页控件。
- 利用java api 实现 RSA算法 解决(javax.crypto.BadPaddingException: Data must start with zero)
- 利用java实现android项目结构API文档
- java学习笔记—自定义实现linkedList集合
- 利用微软翻译API做自己的翻译的工具(java)
- 利用JavaMail API实现发送E-mail的功能
- 2.当形参,返回值类型是JavaBean式的复合类,List集合,数组等时:服务端实现类
- java编程技巧——java list实现分页
- Java 利用游标实现分页
- 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型