List 集合手动分页

小伙伴们好,欢迎关注,一起学习,无限进步

为方便测试,可以直接在 controller 内添加一个方法,或者直接通过 main 方法测试
List 手动分页:

@GetMapping("/getUserInfo")public Map<String,Object> getUserInfo(@RequestParam("pageNo") Integer pageNo,@RequestParam("pageSize") Integer pageSize){if(null == pageNo){pageNo = 1;}if(null == pageSize){pageSize = 10;}List<User> userList = new ArrayList<>();userList.add(new User(1,"奥迪1",23,"123@qq.com","地址1"));userList.add(new User(2,"奥迪2",23,"124@qq.com","地址2"));userList.add(new User(3,"奥迪3",23,"124@qq.com","地址3"));userList.add(new User(4,"奥迪4",23,"125@qq.com","地址4"));userList.add(new User(5,"奥迪4",23,"126@qq.com","地址5"));userList.add(new User(6,"奥迪5",23,"127@qq.com","地址6"));userList.add(new User(7,"奥迪6",23,"128@qq.com","地址7"));userList.add(new User(8,"奥迪7",23,"129@qq.com","地址8"));userList.add(new User(9,"奥迪7",23,"1219@qq.com","地址9"));userList.add(new User(10,"奥迪10",23,"1231@qq.com","地址10"));userList.add(new User(11,"奥迪11",23,"1232@qq.com","地址11"));Integer limit = (pageNo-1)*pageSize;Integer totalSize = userList.size();// 方法一Integer totalPage = totalSize % pageSize == 0 ? totalSize / pageSize : totalSize / pageSize + 1;// 方法二(推荐)其中 pageSize-1 就是 totalSize/pageSize 的最大的余数// Integer totalPage = (totalSize + pageSize -1) / pageSize;// 方法三// Integer totalPage = (int) Math.ceil(totalSize / pageSize);if(pageNo > totalPage){throw new RuntimeException("页数超出了");}List<User> subList = null;if(pageNo == totalPage){// 最后一页subList = userList.subList(limit, totalSize);}else{Integer end= limit + pageSize;// 截取的最后的下标subList = userList.subList(limit, end);// 出现空值处理// subList = CollectionUtils.isEmpty(userList) ? new ArrayList<>() : userList.subList(limit, Math.min(userList.size(), end));}Map<String,Object> map = new HashMap<>();map.put("data",subList);map.put("total",userList.size());subList.forEach(System.out::println);return map;}static class User{private Integer id;private String name;private Integer age;private String email;private String address;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public User(Integer id, String name, Integer age, String email, String address) {this.id = id;this.name = name;this.age = age;this.email = email;this.address = address;}@Overridepublic String toString() {return "User{" +"id='" + id + '\'' +", name='" + name + '\'' +", age=" + age +", email='" + email + '\'' +", address='" + address + '\'' +'}';}}

计算总页数方法

// totalPage 总页数,pageSize 每页显示多少条,totalSize 总条数
// 方法一
Integer totalPage = totalSize % pageSize == 0 ? totalSize / pageSize : totalSize / pageSize + 1;
// 方法二(推荐)其中 pageSize-1 就是 totalSize/pageSize 的最大的余数
// Integer totalPage = (totalSize + pageSize -1) / pageSize;
// 方法三
// Integer totalPage = (int) Math.ceil(totalSize / pageSize);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/725198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

领腾讯云红包,可抵扣云服务器订单金额

在2024年腾讯云新春采购节优惠活动上&#xff0c;可以领取新年惊喜红包&#xff0c;打开活动链接 https://curl.qcloud.com/oRMoSucP 会自动弹出红包领取窗口&#xff0c;如下图&#xff1a; 腾讯云2024新春采购节红包领取 如上图所示&#xff0c;点击“领”红包&#xff0c;每…

信用卡选购要点

文章目录 额度银行联名卡年费福利其他 额度 一般四大行的信用卡审批门槛高&#xff0c;且发卡的额度偏低。 额度也可以通过后期的消费与规律还款获得持续提升。 银行 信用卡一般是网上办理相关业务&#xff0c;对线下网点依赖不大。但是所在城市有信用卡所属银行&#xff0…

【S32K3 MCAL配置】-1.1-GPIO配置及其应用-点亮LED灯(基于MCAL)

目录(共13页精讲,手把手教你S32K3从入门到精通) 实现的架构:基于MCAL层 前期准备工作: 1 创建一个FREERTOS工程

proxysql 2.6部署代理MGR集群读写分离

官方文档 https://proxysql.com/documentation/ProxySQL-Configuration/ 下载安装proxysql https://github.com/sysown/proxysql/releases/download/v2.6.0/proxysql-2.6.0-1-centos7.x86_64.rpmyum -y localinstall proxysql-2.6.0-1-centos7.x86_64.rpm # 软链接数据目录 …

ASPICE实操中的那点事儿-如何解决上、下游一致性难以保证的问题

写在前面 ASPICE理解起来容易&#xff0c;毕竟是有条有理的。但实操起来&#xff0c;尤其是把ASPICE各过程域做全的时候&#xff0c;会遇到各种各样的问题&#xff08;不是技术问题有多难&#xff0c;而是该如何做选择&#xff0c;如何既能符合ASPICE要求&#xff0c;保证过程质…

外包干了10天,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;2019年我通过校招踏入了南京一家软件公司&#xff0c;开始了我的职业生涯。那时的我&#xff0c;满怀热血和憧憬&#xff0c;期待着在这个行业中闯出一片天地。然而&#xff0c;随着时间的推移&#xff0c;我发现自己逐渐陷入…

Java必须掌握的莫夫曼树(含面试大厂题和源码)

面试题&#xff1a;构建哈夫曼树 相关知识点&#xff1a; 哈夫曼树&#xff08;Huffman Tree&#xff09;&#xff1a;哈夫曼树是一种用于数据压缩的树形结构。它是一种最优二叉树&#xff0c;其特点是频率高的字符出现在树的顶部&#xff0c;频率低的字符出现在树的底部&…

2024年阿里云域名优惠口令更新,亲测有效口令大全

2024年阿里云域名优惠口令&#xff0c;com域名续费优惠口令“com批量注册更享优惠”&#xff0c;cn域名续费优惠口令“cn注册多个价格更优”&#xff0c;cn域名注册优惠口令“互联网上的中国标识”&#xff0c;阿里云优惠口令是域名专属的优惠码&#xff0c;可用于域名注册、续…

OCR图片预处理之去除红色水印

import cv2 读取图像 src cv2.imread(“page-2_0.jpg”) if src is None: print(“Fail to open image!”) exit() 将图像转换为灰度图 gray cv2.cvtColor(src, cv2.COLOR_BGR2GRAY) # 全局二值化 th 180 # 阈值要根据实际情况调整 binary cv2.threshold(gray, t…

aiofiles,一个超酷的 Python 异步编程库!

目录 前言 什么是aiofiles库&#xff1f; 安装aiofiles库 基本功能 1. 异步打开文件 2. 异步读取文件 3. 异步写入文件 4. 异步追加内容到文件 应用场景 1. 异步Web服务器 2. 异步数据处理 3. 异步日志记录 总结 前言 大家好&#xff0c;今天为大家分享一个超酷的 Pytho…

stack/queue

链表完了之后就是我们的栈和队列了&#xff0c;当然我们的STL中也有实现&#xff0c;下面我们先来看一下简单用法&#xff0c;跟我们之前C语言实现的一样&#xff0c;stack和queue有这么几个重要的成员函数 最主要的就是这么几个&#xff1a;empty&#xff0c;push&#xff0c;…

Spring揭秘:ImportBeanDefinitionRegistrar应用场景及实现原理!

内容概念 ImportBeanDefinitionRegistrar接口提供了强大的动态注册Bean的能力&#xff0c;它允许开发者在Spring容器初始化时&#xff0c;灵活地根据特定条件或需求来添加或修改Bean定义&#xff0c;从而实现更为精细的控制和扩展性。这是构建可扩展框架、插件系统或处理复杂配…

2024.03.05作业

select实现tcp并发服务器 #include "test.h"#define SER_IP "192.168.42.106" #define SER_PORT 8888int create_socket() {int sfd socket(AF_INET, SOCK_STREAM, 0);if(sfd -1){perror("socket error");exit(-1);}printf("sfd %d\n&q…

安装VMWare+创建Linux虚拟机

点击VMware官网进入官网&#xff0c;下载VMware安装包。 一、安装VMware 一、安装VMware软件 &#xff08;1&#xff09;点击下一步 &#xff08;2&#xff09;勾选“我接受许可协议中的条款”&#xff0c;再点 ”击下一步“。 &#xff08;3&#xff09;选择下一步&#xf…

Linux编程3.2 进程-C程序启动过程

正常情况Linux 启动流程&#xff1a; ① BIOS 启动&#xff0c;完成自检&#xff0c;选择启动硬件 ②如果是磁盘系统读取 MBR ③从 MBR 指示&#xff0c;找到 GRUB 所在分区&#xff0c;加载 GRUB 显示菜单 ④加载 Linux 内核到内存中 ⑤执行 INIT 程序 ⑥进入用户界面 1、内核…

nvm安装、部署以及使用

1. nvm安装 官方地址&#xff1a;https://github.com/nvm-sh/nvm/blob/master/README.md nvm window安装&#xff1a;https://github.com/coreybutler/nvm-windows/releases 看个人习惯&#xff0c;通过不同形式来安装nvm&#xff0c;省劲就用.exe安装即可。 Tips&#xff1…

「连载」边缘计算(二十五)03-05:边缘部分源码(源码分析篇)

&#xff08;接上篇&#xff09; 1&#xff09;EdgehubConfig初始化具体如下所示。 config.InitEdgehubConfig() config.InitEdgehubConfig()函数定义具体如下所示。 KubeEdge/edge/pkg/edgehub/config/config.go // InitEdgehubConfig init edgehub config func InitEdgeh…

代码随想录算法训练营第三十四天|LeetCode860 柠檬水找零、LeetCode406 根据身高重建队列、LeetCode452 用最少数量的箭引爆气球

860.柠檬水找零 思路&#xff1a;只有5、10、20三种面额的纸币&#xff0c;因此每接收一种纸币对应的数量就&#xff0c;当接收10的&#xff0c;5的数量就--&#xff0c;当接收20的&#xff0c;有限消耗10的纸币&#xff08;贪心&#xff09;&#xff0c;因为10只能用于20找零…

【Flink网络数据传输(4)】RecordWriter(下)封装数据并发送到网络的过程

文章目录 一. RecordWriter封装数据并发送到网络1. 数据发送到网络的具体流程2. 源码层面2.1. Serializer的实现逻辑a. SpanningRecordSerializer的实现b. SpanningRecordSerializer中如何对数据元素进行序列化 2.2. 将ByteBuffer中间数据写入BufferBuilder 二. BufferBuilder申…

FreeRtos自学笔记3-----参考正点原子视频

FreeRtos任务的创建与删除 任务的创建与删除本质上是调用FreeRtos的API函数。 API函数&#xff1a; 1.xTaskGreate():动态创建任务函数&#xff1b; 2.xTaskGreateStatic();静态创建任务函数&#xff1b; 3.xTaskDelete():任务删除 动态创建任务&#xff1a;任务的任务控制块以…