java 通用内存分页(List分页)
发布日期:2021-06-29 22:26:29
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月14日 04时41分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android设计模式之单例模式(防止反序列化和反射构造器)
2019-04-30
其他方式登录控件
2019-04-30
Android部分文字响应点击
2019-04-30
Activity进行全局管理
2019-04-30
ConstraintLayout介绍与具体使用
2019-04-30
Retrofit2+Rxjava+OkHttp的使用和网络请求
2019-04-30
二分法查找
2019-04-30
选择排序
2019-04-30
RxJava学习(一)---Hello World
2019-04-30
Git&Github的使用
2019-04-30
二哈实现人脸识别,TinyWebDB应用,mqtt上传
2019-04-30
掌控板抢答器
2019-04-30
MySQL知识总结
2019-04-30
java基础知识点总结
2019-04-30
java开发操作系统面试题
2019-04-30
java异常知识点总结
2019-04-30
C++ 虚函数表
2019-04-30
C++ 在栈上分配内存
2019-04-30
boost::shared_array
2019-04-30
浅谈C++中指针和引用的区别
2019-04-30