java 通用内存分页(List分页)
发布日期:2021-06-29 22:26:29
浏览次数:2
分类:技术文章
本文共 2301 字,大约阅读时间需要 7 分钟。
自己编写相关工具类
List分页和SQL分页在什么情况下使用?
参考URL: https://www.zhihu.com/question/62593358/answer/1126234241 Java对list进行分页,subList()方法实现分页 参考URL: https://www.cnblogs.com/loong-hon/p/10863635.html [推荐]Java内存分页工具类 参考URL: http://www.manongjc.com/detail/14-zmdycqozrtwaylf.html使用思路:用这个工具类,page方法,获取某个页的数据,返回给web前端,使用自己
PageVO去封装即可。public class RAMPager{ private List data; private int pageSize; /** * @param data 原始数据 * @param pageSize 每页条数 */ public RAMPager(List data, int pageSize) { this.data = data; this.pageSize = pageSize; } /** * 获取某页数据,从第1页开始 * * @param pageNum 第几页 * @return 分页数据 */ public List page(int pageNum) { if (pageNum < 1) { pageNum = 1; } int from = (pageNum - 1) * pageSize; int to = Math.min(pageNum * pageSize, data.size()); if (from > to) { from = to; } return data.subList(from, to); } /** * 获取总页数 */ public int getPageCount() { if (pageSize == 0) { return 0; } return data.size() % pageSize == 0 ? (data.size() / pageSize) : (data.size() / pageSize + 1); } /** * 元素迭代器 */ public Iterator
> iterator() { return new Itr(); } private class Itr implements Iterator
> { int page = 1; Itr() { } public boolean hasNext() { return page <= getPageCount(); } public List next() { int i = page; if (i > getPageCount()) return new ArrayList<>(); page = i + 1; return RAMPager.this.page(i); } } public static void main(String[] args) { List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); System.out.println("原始数据是:" + list); int pageSize = 2; System.out.println("每页大小是:" + pageSize); RAMPager pager = new RAMPager<>(list, pageSize); System.out.println("总页数是: " + pager.getPageCount()); System.out.println("<- - - - - - - - - - - - - ->"); // 无需感知页码情况下使用 Iterator
> iterator = pager.iterator(); while (iterator.hasNext()) { List next = iterator.next(); System.out.println("next: " + next); } System.out.println("<- - - - - - - - - - - - - ->"); // 需要指定页码情况使用,页码从第一页开始,且小于等于总页数! for (int i = 1; i <= pager.getPageCount(); i++) { List page = pager.page(i); System.out.println("第 " + i + " 页数据是:" + page); } }}
转载地址:https://docker.blog.csdn.net/article/details/110870770 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月11日 12时38分08秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mysql 5.7 连接超时参数设置
2019-04-30
mysql 中 分析表 检查表 优化表
2019-04-30
mysql 中锁的一致性非锁定读 和 一致性锁定读
2021-07-03
mysql中 锁行方式for Update 和 lock in share mode
2021-07-03
mysql 如何解决幻像问题(Phantom Problem)
2021-07-03
mysql 中阻塞讲解
2021-07-03
mysql 中锁升级问题
2021-07-03
mysql5.7使用GTID特性搭建主从复制
2021-07-03
hive 数据倾斜问题汇总
2021-07-03
和面试官谈一谈高并发场景下锁的使用技巧
2021-07-03
六、DDE服务器函数
2021-07-03
八、国际化函数
2021-07-03
九、库管理函数
2021-07-03
十、数值计算函数
2021-07-03
十一、打印和打印机设置函数
2021-07-03
十二、注册表操作函数
2021-07-03
C++的除法需要留意的几点情况
2021-07-03
C++打印三角形、四边形
2021-07-03