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&lt;E&gt;<span style="color: #000000;"> totalList; </span><span style="color: #0000ff;">public</span> MyPageUtilVo(List&lt;E&gt;<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&lt;E&gt; 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 &lt;= <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 &gt;= <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>&lt;E&gt; subList = <span style="color: #0000ff;">new</span> ArrayList&lt;E&gt;<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 &gt;= <span style="color: #800080;">10</span> &amp;&amp; pageRecords &lt;= <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 &gt;<span style="color: #000000;"> totalRecord)
{
startIndex </span>=<span style="color: #000000;"> totalRecord;
} </span><span style="color: #0000ff;">if</span> (startIndex &lt; <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 &lt; <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 &lt;<span style="color: #000000;"> getStartIndex())
{
endIndex </span>=<span style="color: #000000;"> getStartIndex();
} </span><span style="color: #0000ff;">if</span> (endIndex &gt; <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 &gt; <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 &lt;= <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 &gt; <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 &lt;= <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集合进行分页的更多相关文章

  1. List集合进行分页

    /** * @ClassName: Text2 * @Description: (集合的分页算法) * @author Luhan * @date 2017年3月16日 下午17:18:06*/pub ...

  2. PHP redis有序集合实现分页

    <?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //设置 redis 字符 ...

  3. 针对list集合进行分页展示

    直接定义个工具类,代码如下: package com.jk51.modules.wechat.web.util; import java.util.Collections; import java.u ...

  4. C# ,通用内存集合对象分页、筛选(lambda那点事)

    通常呢我们需要翻页的数据大多都是从数据库中取,翻页.筛选.排序啥的都是通过SQL语句由数据库帮我搞定,那么有些需求没有数据库呢?或者有些数据只存在于内存中不存到数据库呢?怎么实现内存里面的对象集合的通 ...

  5. linq查询集合并分页展示数据

    private void Bind() { if (Request.QueryString["QuestionNo"] != null) { string QuestionNo = ...

  6. linq给list集合数据分页

    var lastlist= newlist.Skip(pageindex * pagesize).Take(pagesize);

  7. springboot集合pagehelper分页不生效的原因

    也可以

  8. Lind.DDD.Paging分页模块介绍

    回到目录 分页组件网上有很多,MVC.Pager,JSPager等,通过实现方式大体分为前端分页和后端分页,前端分页是前台对list内存本地集合进行分页,缺点就是在大数据情况下,内存占用过高:后端分页 ...

  9. 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用

    在上篇<基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理>介绍了Bootstrap开发框架的一些基础性概括,包括总体界面效果,以及布局.菜单等内容, ...

  10. c# 调用分页(控制器端的)与时间的格式

    1.在操作的model中: 2.在控制器中: , command.PageSize);//将从数据库获取到的集合进行分页 var gridModel = new DataSourceResult { ...

随机推荐

  1. 【笔记】P1606 [USACO07FEB]Lilypad Pond G 及相关

    题目传送门 建图 首先,根据题目,可以判断出这是一道最短路计数问题. 但是要跑最短路,首先要用他给的信息建图,这是非常关键的一步. 根据题意,我们可以想出以下建图规则: 起点或是一个空白处可以花费 \ ...

  2. 使用 Spring Cloud LoadBalancer 实现客户端负载均衡

    使用 Spring Cloud LoadBalancer 实现客户端负载均衡 作者:Grey 原文地址: 博客园:使用 Spring Cloud LoadBalancer 实现客户端负载均衡 CSDN ...

  3. 篇(16)-Asp.Net Core入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证二)

    入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证二) (1).在用户管理着模块中,相比较菜单功能的代码还是比较多的,设计到用户的创建,修改,角色变更和密码重置,同时都集中在列表 ...

  4. Azure DevOps Server 用户组加入 Azure AD Domain Service 管理用户

    一,引言 今天我们继续讲解 Azure DevOps Server 的内容,对于管理用户组除了在 Azure DevOps Server 服务器上添加管理员方式外,还有没有其他方式,Azure Dev ...

  5. C++编程笔记(智能指针学习)

    目录 scoped_ptr unique_ptr shared_ptr 智能指针简单应用 智能指针简单应用 scoped_ptr 拷贝构造和 =赋值操作均为私有,不允许 内部重载了解引用(*)操作符和 ...

  6. Leetcode-SQL学习计划-SQL入门-1527.患某种疾病的患者【regexp正则表达式匹配】

    链接:https://leetcode.cn/problems/patients-with-a-condition/ -- 1527.患某种疾病的患者 -- 链接:https://leetcode.c ...

  7. 回溯法求解n皇后问题(复习)

    回溯法 回溯法是最常用的解题方法,有"通用的解题法"之称.当要解决的问题有若干可行解时,则可以在包含问题所有解的空间树中,按深度优先的策略,从根节点出发搜索解空间树.算法搜索至解空 ...

  8. 东拼西凑学java

    前言 随着大环境的影响,互联网寒冬降临,程序员的日子越来越难,搞不好哪天就被噶了,多学点东西也没啥坏处,国内市场java如日中天,出门在外不会写两行java代码,都不好意思说自己是程序员,伪装成一个萌 ...

  9. ArcObjects SDK开发 017 在ArcObject SDK 中使用Toolbox

    1.Geoprocessor和IGPProcess Geoprocessor是ArcObjects SDK中定义Tool执行器.IGPProcess接口是ArcObjects SDK中定义的ArcTo ...

  10. freeswitch的gateway配置方案

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. 在voip的网络模型中,网关是我们经常会遇到的概念. 在freeswitch中,如何配置gateway,如何使用好gateway的模 ...