java 通用内存分页(List分页)
自己编写相关工具类
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<T> {private List<T> data;private int pageSize;/*** @param data 原始数据* @param pageSize 每页条数*/public RAMPager(List<T> data, int pageSize) {this.data = data;this.pageSize = pageSize;}/*** 获取某页数据,从第1页开始** @param pageNum 第几页* @return 分页数据*/public List<T> 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<List<T>> iterator() {return new Itr();}private class Itr implements Iterator<List<T>> {int page = 1;Itr() {}public boolean hasNext() {return page <= getPageCount();}public List<T> 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<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);System.out.println("原始数据是:" + list);int pageSize = 2;System.out.println("每页大小是:" + pageSize);RAMPager<Integer> pager = new RAMPager<>(list, pageSize);System.out.println("总页数是: " + pager.getPageCount());System.out.println("<- - - - - - - - - - - - - ->");// 无需感知页码情况下使用Iterator<List<Integer>> iterator = pager.iterator();while (iterator.hasNext()) {List<Integer> next = iterator.next();System.out.println("next: " + next);}System.out.println("<- - - - - - - - - - - - - ->");// 需要指定页码情况使用,页码从第一页开始,且小于等于总页数!for (int i = 1; i <= pager.getPageCount(); i++) {List<Integer> page = pager.page(i);System.out.println("第 " + i + " 页数据是:" + page);}}
}
java 通用内存分页(List分页)相关推荐
- Linux内存管理:分页机制
<Linux内存管理:内存描述之内存节点node> <Linux内存管理:内存描述之内存区域zone> <Linux内存管理:内存描述之内存页面page> < ...
- 第83节:Java中的学生管理系统分页功能
第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...
- Linux内存管理:分页
Linux内存管理:分页 rtoax 2021年3月 1. 简介 在 Linux 内核启动过程中的第五部分,我们学到了内核在启动的最早阶段都做了哪些工作.接下来,在我们明白内核如何运行第一个 init ...
- java oracle的2种分页方法
java oracle的2种分页方法 一物理分页: <!-- 分页查询所有的博客信息 --><select id="findBlogs" resultType=& ...
- Java架构直通车——ElasticSearch深度分页解决方案
文章目录 分页查询 深度分页 深度分页解决方案 分页查询 分页查询是这样的: POST /shop/_doc/_search {"query": {"match_all& ...
- 十分良心!全网最详细的Java 自动内存管理机制及性能优化教程
同样的,先来个思维导图预览一下本文结构. 一图带你看完本文 一.运行时数据区域 首先来看看Java虚拟机所管理的内存包括哪些区域,就像我们要了解一个房子,我们得先知道这个房子大体构造.根据<Ja ...
- java 虚拟机_浅谈Java虚拟机内存区
1. Java 虚拟机内存区概述 我们在编写程序时,经常会遇到OOM(out of Memory)以及内存泄漏等问题.为了避免出现这些问题,我们首先必须对JVM的内存划分有个具体的认识.JVM将内存主 ...
- matlab java堆内存溢出,matlab内存溢出的解决方案
(1) 增加虚拟内存:cmd -> taskmgr 打开任务管理器,查看物理内存和虚拟内存,可观察matlab在运行过程中是否超过物理内存和虚拟内存.若超过,增加虚拟内存的方法是不可行的.物理内 ...
- JAVA的内存溢出和内存泄漏
目录 一.前言和定义 二.内存溢出和内存泄漏 JAVA堆溢出 JVM虚拟机栈和本地方法栈 方法区 三.如何尽可能的避免内存溢出和内存泄漏 一.前言和定义 在先前的博客中已经分析了JAVA对象内存分配, ...
最新文章
- HDU 4741 Save Labman No.004 计算几何 数学
- BW report execution callstack
- HDU 6833 A Very Easy Math Problem
- html文档的文件头的主要作用是什么,文件头
- 95-30-020-java.util-Map
- hautoj 1260
- 微信支付--预支付(统一下单)
- 202102-一个小屁民的若有所思
- sample函数—R语言
- macos可以升级到指定版本吗_如何升级mac系统版本?
- 霹雳猿教程网站正式上线
- 魅族android10内测答案,魅族Flyme9内测答案
- 十分担心外行人抢内行人的饭碗
- Java限流解决方案
- 【计组之EDA】学了EDA,这些元件符号及常用化简公式你都会了叭(超详细图示ai)
- 20年没堵上股权漏洞,万科沦落到靠安邦搭救,王石也是心大
- 煮饭的机器人作文_做饭机器人作文3篇
- 导师制 一 团队制
- NXP NTP53321 NTAG芯片简单使用
- active控件和java脚本_【学习笔记】在原生javascript中使用ActiveX和插件