List 集合手动分页的方法总结
前言
在工作中难免会遇到,将组装的集合数据进行分页处理,现在我将自己手动分页的三种方法进行总结,有不对的地方敬请大家批评指正!
一、数据准备
- // 当前页
int pageIndex = 1;
// 页长
int pageSize = 10;
- List<UserEntity> userList = new ArrayList<>();
- userList.add(UserEntity.builder().id(1).name("张三").sex(0).build());
- userList.add(UserEntity.builder().id(2).name("李四").sex(0).build());
- userList.add(UserEntity.builder().id(3).name("张三").sex(0).build());
- userList.add(UserEntity.builder().id(4).name("李四").sex(0).build());
- userList.add(UserEntity.builder().id(5).name("王五").sex(1).build());
- userList.add(UserEntity.builder().id(6).name("王麻子").sex(1).build());
- userList.add(UserEntity.builder().id(7).name("店小二").sex(1).build());
- userList.add(UserEntity.builder().id(8).name("王大锤").sex(1).build());
- userList.add(UserEntity.builder().id(9).name("小黑").sex(1).build());
- userList.add(UserEntity.builder().id(10).name("李思思").sex(0).build());
- userList.add(UserEntity.builder().id(11).name("张三丰").sex(1).build());
- userList.add(UserEntity.builder().id(12).name("尼古拉斯赵六").sex(1).build());
- userList.add(UserEntity.builder().id(13).name("赵老刘").sex(1).build());
二、利用 Lists.partition() 方法进行数据将数据切割分页
- List<UserEntity> resultList = new ArrayList<>();
// 将数据按照传过来页长进行切割- List<List<UserEntity>> partition = Lists.partition(userList,pageSize);
- for (int i = 0; i < partition.size(); i++) {
- if (i == pageIndex){
- resultList = partition.get(pageIndex);
- }
- }
三、利用封装的分页工具进行分页
(1)分页工具
- /**
- * @project
- * @Description 对List集合进行份分页
- * @Author songwp
- * @Date 2023/5/12 13:55
- **/
- public class ListPagingUtil {
- private Integer currentPage;//当前页
- private Integer pageSize;//每页显示记录条数
- private Integer totalPage;//总页数
- private Integer star;//开始数据
- private Integer total;//总条数
- private List<?> dataList;//每页显示的数据
- public Integer getCurrentPage() {
- return currentPage;
- }
- public void setCurrentPage(Integer currentPage) {
- this.currentPage = currentPage;
- }
- public Integer getPageSize() {
- return pageSize;
- }
- public void setPageSize(Integer pageSize) {
- this.pageSize = pageSize;
- }
- public Integer getTotalPage() {
- return totalPage;
- }
- public void setTotalPage(Integer totalPage) {
- this.totalPage = totalPage;
- }
- public List<?> getDataList() {
- return dataList;
- }
- public void setDataList(List<?> dataList) {
- this.dataList = dataList;
- }
- public Integer getStar() {
- return star;
- }
- public void setStar(Integer star) {
- this.star = star;
- }
- public Integer getTotal() {
- return total;
- }
- public void setTotal(Integer total) {
- this.total = total;
- }
- @Override
- public String toString() {
- return "ListPagingUtil{" +
- "currentPage=" + currentPage +
- ", pageSize=" + pageSize +
- ", totalPage=" + totalPage +
- ", dataList=" + dataList +
- ", star=" + star +
- ", total=" + total +
- '}';
- }
- public void pageStartInfo(Integer currentPage, Integer pageSize){
- //如果传入的pageNumber为null给pageNumber赋为1
- currentPage = currentPage == null ? 1 : currentPage;
- //如果传入的pageSize为null给pageSize赋为10
- pageSize = pageSize == null ? 10 : pageSize;
- this.setCurrentPage(currentPage);
- this.setPageSize(pageSize);
- }
- public static ListPagingUtil paging(Integer currentPage, Integer pageSize, List<?> list) {
- ListPagingUtil pagingUtil = new ListPagingUtil();
- //初始化
- pagingUtil.pageStartInfo(currentPage, pageSize);
- //设置起始数据
- pagingUtil.setStar((pagingUtil.getCurrentPage()-1)*pagingUtil.getPageSize());
- //设置总数
- pagingUtil.setTotal(list.size());
- //设置总页数
- pagingUtil.setTotalPage(pagingUtil.getTotal() % pagingUtil.getPageSize() == 0 ? pagingUtil.getTotal()/pagingUtil.getPageSize() :pagingUtil.getTotal()/pagingUtil.getPageSize()+1);
- //截取list
- pagingUtil.setDataList(list.subList(pagingUtil.getStar(), pagingUtil.getTotal()-pagingUtil.getStar()>pagingUtil.getPageSize()?pagingUtil.getStar()+pagingUtil.getPageSize():pagingUtil.getTotal()));
- return pagingUtil;
- }
- }
(2)方法调用
- ListPagingUtil.paging(pageIndex,pageSize, userList)
四、利用 stream进行分页 处理
- List<UserEntity> collectList = userList.stream().skip((pageIndex - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
List 集合手动分页的方法总结的更多相关文章
- Laravel手动分页的方法
use Illuminate\Pagination\LengthAwarePaginator; public function index(Request $request){ $list =[... ...
- 关于laravel 得手动分页问题
一般得分页,我们只需要使用paginate方法,就可以简单得搞定.但是遇到数组得组合情况呢?这个时候,就需要我们使用自定义分页了.首先我们看下laravel得分页方法源码: #vendor/larav ...
- Laravel 手动分页实现
Laravel 手动分页实现 基于5.2版本 在开发过程中有这么一种情况,你请求Java api获取信息,由于信息较多,需要分页显示.Laravel官方提供了一个简单的方式paginate($perP ...
- List集合进行分页
/** * @ClassName: Text2 * @Description: (集合的分页算法) * @author Luhan * @date 2017年3月16日 下午17:18:06*/pub ...
- jQuery EasyUI datagrid实现本地分页的方法
http://www.codeweblog.com/jquery-easyui-datagrid%e5%ae%9e%e7%8e%b0%e6%9c%ac%e5%9c%b0%e5%88%86%e9%a1% ...
- Java进阶(二十四)Java List集合add与set方法原理简介
Java List集合add与set方法原理简介 add方法 add方法用于向集合列表中添加对象. 语法1 用于在列表的尾部插入指定元素.如果List集合对象由于调用add方法而发生更改,则返回 tr ...
- 手动调用run方法和普通方法调用没有区别
手动调用run方法和普通方法调用没有区别
- mysql分页优化方法
mysql分页优化方法 今天遇到开发反应分页语句很慢,马上看一下到底是啥的分页语句 原分页语句 SELECT * FROM `tt` LIMIT , 执行这个语句需要6秒+时间 执行计划为全表扫描 在 ...
- Latex 算法过长 分页显示方法
参考: Algorithm tag and page break Latex 算法过长 分页显示方法 1.引用algorithm包: 2.在\begin{document}前加上以下Latex代码: ...
- MySQL大数据量分页查询方法及其优化
MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适 ...
随机推荐
- Rename a Local and Remote Git Branch
Renaming Git Branch Follow the steps below to rename a Local and Remote Git Branch: 01 Start by swit ...
- python中的反射机制
转自https://www.cnblogs.com/renjie1105/p/15909285.html python反射简介 在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或需 ...
- 【LuckyFrame研究】下载安装包
下载安装包,可以快速部署 百度网盘链接: https://pan.baidu.com/s/1SNUhzoKFgH2TRQN2Rx711A 提取码: u845 服务端压缩包 V3.X版本:Lucky ...
- IBM 双队列管理器,双向传输
1. 建立队列管理器 建立[test01][test02]两个队列管理器,一直下一步即可,端口号不能一致(需要记住设置的端口号,后面会用到) [test01]端口号 1414 [test02]端口号 ...
- 使用shell 方式对 vcenter 进行补丁升级
使用shell 方式对 vcenter 进行补丁升级 背景:最近VMware官网发布了最新的VMware vCenter Server 7.0 iso补丁文件,为了安全起故此对vCenter 进行安全 ...
- GO语言学习笔记-反射篇 Study for Go ! Chapter nine - Reflect
持续更新 Go 语言学习进度中 ...... GO语言学习笔记-类型篇 Study for Go! Chapter one - Type - slowlydance2me - 博客园 (cnblogs ...
- Javaweb基础复习------JSON相关知识
JSON(JavaScript对象表示法) 首先,我们需要知道的是,要使用json语法的话,就需要在Maven项目中导入相关的包,可以参考我之前发过的那个Maven导包那个网址,在里面找到这个页面: ...
- Spring Security 框架使用
更多内容,前往IT-BLOG 一.Spring Security 简介 Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供 ...
- 在线调试工具 Arthas
Arthas(阿尔萨斯) 是 Alibaba开源的一款 Java在线诊断工具,能够分析,诊断,定位Java应用问题,例如:JVM信息,线程信息,搜索类中的方法,跟踪代码执行,观测方法的入参和返回参数等 ...
- [ACM]TL-Kruskal
#include<iostream> #include<cstdio> using namespace std; struct edge { int u; int v; int ...