对List集合进行分页
1 简要说明
有时候,我们有一个list集合,需要对它进行分页处理
下面的根据类MyPageUtilVo就可以做到
它自带泛型,适合各种集合
可以设置每页的大小(默认为10)
根据页码(从1开始)就可以获取分页后的集合了
2 工具类
public class MyPageUtilVo<E>
{
/**
* 每页显示的记录数
*/
private int pageRecords = 10;</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 总记录数
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> totalRecord; </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 分页切割的启始点
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> startIndex; </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 分页切割的结束点
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> endIndex; </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 总页数
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> totalPage; </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 当前页数
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span> currentPage = <span style="color: #800080;">1</span><span style="color: #000000;">; </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 总记录集合
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">private</span> List<E><span style="color: #000000;"> totalList; </span><span style="color: #0000ff;">public</span> MyPageUtilVo(List<E><span style="color: #000000;"> totalList)
{
super(); </span><span style="color: #0000ff;">this</span>.totalList =<span style="color: #000000;"> totalList; innit();
} </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 初始化该分页对象
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> innit()
{
</span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">null</span> !=<span style="color: #000000;"> totalList)
{
totalRecord </span>=<span style="color: #000000;"> totalList.size(); </span><span style="color: #0000ff;">if</span> (totalRecord % <span style="color: #0000ff;">this</span>.pageRecords == <span style="color: #800080;">0</span><span style="color: #000000;">)
{
</span><span style="color: #0000ff;">this</span>.totalPage = totalRecord / <span style="color: #0000ff;">this</span><span style="color: #000000;">.pageRecords;
}
</span><span style="color: #0000ff;">else</span><span style="color: #000000;">
{
</span><span style="color: #0000ff;">this</span>.totalPage = totalRecord / <span style="color: #0000ff;">this</span>.pageRecords + <span style="color: #800080;">1</span><span style="color: #000000;">;
}
}
} </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 得到分页后的数据
*
* @return 分页数据
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> List<E> getPage(<span style="color: #0000ff;">int</span><span style="color: #000000;"> currentPage)
{
</span><span style="color: #0000ff;">this</span>.currentPage =<span style="color: #000000;"> currentPage; </span><span style="color: #0000ff;">if</span> (currentPage <= <span style="color: #800080;">0</span><span style="color: #000000;">)
{
</span><span style="color: #0000ff;">this</span>.currentPage = <span style="color: #800080;">1</span><span style="color: #000000;">;
}
</span><span style="color: #0000ff;">if</span> (currentPage >= <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalPage)
{
</span><span style="color: #0000ff;">this</span>.currentPage = <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalPage;
} List</span><E> subList = <span style="color: #0000ff;">new</span> ArrayList<E><span style="color: #000000;">(); </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">null</span> != <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalList)
{
subList.addAll(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.totalList.subList(getStartIndex(), getEndIndex()));
} </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> subList;
} </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 设置每页显示的记录条数,如果不设置则默认为每页显示10条记录
*
* @param pageRecords
* 每页显示的记录条数(值必需介于10~100之间)
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> setPageRecords(<span style="color: #0000ff;">int</span><span style="color: #000000;"> pageRecords)
{
</span><span style="color: #0000ff;">if</span> (pageRecords >= <span style="color: #800080;">10</span> && pageRecords <= <span style="color: #800080;">100</span><span style="color: #000000;">)
{
</span><span style="color: #0000ff;">this</span>.pageRecords =<span style="color: #000000;"> pageRecords; innit();
}
} </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> getStartIndex()
{
</span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">null</span> == <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalList)
{
</span><span style="color: #0000ff;">return</span> <span style="color: #800080;">0</span><span style="color: #000000;">;
} </span><span style="color: #0000ff;">this</span>.startIndex = (getCurrentPage() - <span style="color: #800080;">1</span>) * <span style="color: #0000ff;">this</span><span style="color: #000000;">.pageRecords; </span><span style="color: #0000ff;">if</span> (startIndex ><span style="color: #000000;"> totalRecord)
{
startIndex </span>=<span style="color: #000000;"> totalRecord;
} </span><span style="color: #0000ff;">if</span> (startIndex < <span style="color: #800080;">0</span><span style="color: #000000;">)
{
startIndex </span>= <span style="color: #800080;">0</span><span style="color: #000000;">;
} </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> startIndex;
} </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> getEndIndex()
{
</span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">null</span> == <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalList)
{
</span><span style="color: #0000ff;">return</span> <span style="color: #800080;">0</span><span style="color: #000000;">;
} endIndex </span>= getStartIndex() + <span style="color: #0000ff;">this</span><span style="color: #000000;">.pageRecords; </span><span style="color: #0000ff;">if</span> (endIndex < <span style="color: #800080;">0</span><span style="color: #000000;">)
{
endIndex </span>= <span style="color: #800080;">0</span><span style="color: #000000;">;
} </span><span style="color: #0000ff;">if</span> (endIndex <<span style="color: #000000;"> getStartIndex())
{
endIndex </span>=<span style="color: #000000;"> getStartIndex();
} </span><span style="color: #0000ff;">if</span> (endIndex > <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalRecord)
{
endIndex </span>= <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalRecord;
} </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> endIndex;
} </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> getTotalPage()
{
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> totalPage;
} </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> getTotalRecord()
{
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> totalRecord;
} </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> boolean isEndPage()
{
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span>.currentPage == <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalPage;
} </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 获取下一页的页数
*
* @return 下一页的页数
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> getNextPage()
{
</span><span style="color: #0000ff;">int</span> nextPage = <span style="color: #0000ff;">this</span>.currentPage + <span style="color: #800080;">1</span><span style="color: #000000;">; </span><span style="color: #0000ff;">if</span> (nextPage > <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalPage)
{
nextPage </span>= <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalPage;
}
</span><span style="color: #0000ff;">if</span> (nextPage <= <span style="color: #800080;">0</span><span style="color: #000000;">)
{
nextPage </span>= <span style="color: #800080;">1</span><span style="color: #000000;">;
} </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> nextPage;
} </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 获取上一页的页数
*
* @return 上一页的页数
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> getPrivyPage()
{
</span><span style="color: #0000ff;">int</span> privyPage = <span style="color: #0000ff;">this</span>.currentPage - <span style="color: #800080;">1</span><span style="color: #000000;">; </span><span style="color: #0000ff;">if</span> (privyPage > <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalPage)
{
privyPage </span>= <span style="color: #0000ff;">this</span><span style="color: #000000;">.totalPage;
} </span><span style="color: #0000ff;">if</span> (privyPage <= <span style="color: #800080;">0</span><span style="color: #000000;">)
{
privyPage </span>= <span style="color: #800080;">1</span><span style="color: #000000;">;
} </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> privyPage;
} </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> getCurrentPage()
{
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> currentPage;
}
}
3 示例
//对一个List<Map<String,String>>进行分页
int size = list.size();
MyPageUtilVo<Map<String,String>> pa = new MyPageUtilVo(list);
pa.setPageRecords(15); //设置每页数量
List<Map<String, String>> page = pa.getPage(1);
return getDataTable(page,size);
对List集合进行分页的更多相关文章
- List集合进行分页
/** * @ClassName: Text2 * @Description: (集合的分页算法) * @author Luhan * @date 2017年3月16日 下午17:18:06*/pub ...
- PHP redis有序集合实现分页
<?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //设置 redis 字符 ...
- 针对list集合进行分页展示
直接定义个工具类,代码如下: package com.jk51.modules.wechat.web.util; import java.util.Collections; import java.u ...
- C# ,通用内存集合对象分页、筛选(lambda那点事)
通常呢我们需要翻页的数据大多都是从数据库中取,翻页.筛选.排序啥的都是通过SQL语句由数据库帮我搞定,那么有些需求没有数据库呢?或者有些数据只存在于内存中不存到数据库呢?怎么实现内存里面的对象集合的通 ...
- linq查询集合并分页展示数据
private void Bind() { if (Request.QueryString["QuestionNo"] != null) { string QuestionNo = ...
- linq给list集合数据分页
var lastlist= newlist.Skip(pageindex * pagesize).Take(pagesize);
- springboot集合pagehelper分页不生效的原因
也可以
- Lind.DDD.Paging分页模块介绍
回到目录 分页组件网上有很多,MVC.Pager,JSPager等,通过实现方式大体分为前端分页和后端分页,前端分页是前台对list内存本地集合进行分页,缺点就是在大数据情况下,内存占用过高:后端分页 ...
- 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用
在上篇<基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理>介绍了Bootstrap开发框架的一些基础性概括,包括总体界面效果,以及布局.菜单等内容, ...
- c# 调用分页(控制器端的)与时间的格式
1.在操作的model中: 2.在控制器中: , command.PageSize);//将从数据库获取到的集合进行分页 var gridModel = new DataSourceResult { ...
随机推荐
- Halcon使用MeasurePos来实现检测边缘点
(1)为了提高性能,测量句柄只需要初始化一次: 参数:测量矩形的中心点行坐标,测量矩形中心的列坐标,测量矩形的角度,测量矩形的宽,测量矩形的高,待处理图像的宽,待处理图像的高,使用的算法,输出测量句柄 ...
- Kubernetes集群YAML文件详解
Kubernetes集群YAML文件详解 概述 k8s 集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到YAML 格式文件中,我们把这种 ...
- 2022-11-02 Acwing每日一题
逆序对的个数 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量. 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆 ...
- fastjson远程代码执行漏洞
fastjson漏洞学习记录 免责声明: Fastjson 1.2.24 远程代码执行漏洞 漏洞说明 前提条件 影响范围 漏洞复现 Fastjson<=1.2.47 远程代码执行漏洞 Fastj ...
- 08 | 白话容器基础(四):重新认识Docker容器
你好,我是张磊.今天我和你分享的主题是:白话容器基础之重新认识Docker容器. 在前面的三次分享中,我分别从Linux Namespace的隔离能力.Linux Cgroups的限制能力,以及基于r ...
- kubeEdge的MetaManager模块简介
MetaManager 是edged和edgehub之间的消息处理器,它还负责将元数据存储到轻量级数据库SQLite或从中检索元数据(metadata). 根据以下不同的operation接收不同类型 ...
- __init__、__all__
在python中 引用模块包的时候,要先进入此模块的__init__.py中畅游一遍,因此,我们多次需要一个语句的时候,就可以将这些语句写入到__init__.py中: 在使用*号的时候我们可以用__ ...
- 一个有趣的nginx HTTP 400响应问题分析
背景 之前在一次不规范HTTP请求引发的nginx响应400问题分析与解决 中写过客户端query参数未urlencode导致的400问题,当时的结论是: 对于query参数带空格的请求,由于其不符合 ...
- referer的反爬和爬虫下载视频
一.缘由 在梨视频等一些网站中会使用防盗链作为反爬的基础方法,这个反爬并不严重,只是平时的时候需要多加留意.此次实现对应链接中梨视频的下载. 二.代码实现 #1.拿到contid #2.拿到video ...
- Kubernetes(k8s)存储管理之数据卷volumes(五):动态制备-存储类StorageClass
目录 一.系统环境 二.前言 三.静态制备和动态制备 四.存储类StorageClass 4.1 存储类StorageClass概览 4.2 StorageClass 资源 五.创建存储类Storag ...