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. 干货,深入剖析ReentrantLock源码,推荐收藏

    ReentrantLock和Synchronized都是Java开发中最常用的锁,与Synchronized这种JVM内置锁不同的是,ReentrantLock提供了更丰富的语义.可以创建公平锁或非公 ...

  2. vue-element Form表单验证没错却一直提示错误

    在使用element-UI 的表单时,发生一个验证错误,已输入值但验证的时候却提示没有输入 修改前 <el-form-item>中的prop绑定的是cus_name,而item里面的控件绑 ...

  3. 关于CSDN发布博客接口的研究

    前言 其实我之前就有一个想法,实现用 python 代码来发布博客, 因为我个人做了一个发布到 github 博客软件(其实就是实现 git 命令集成,还有markdown的渲染的软件), 如果我弄明 ...

  4. day14 I/O流——序列化与反序列化 & 计算机网络五层架构 & TCP的建立连接与断开连接

    day 14 序列化与反序列化 序列化 将对象转化成特定格式的字符串文件(字节文件)叫做序列化 1.一个类要想实现序列化,必须实现serializable接口 2.序列化用途 ​ 1)把对象的字节序列 ...

  5. 1.2 Hadoop简介-hadoop-最全最完整的保姆级的java大数据学习资料

    目录 1.2 Hadoop简介 1.2.1 什么是Hadoop 1.2.2 Hadoop的起源 1.2.3 Hadoop的特点 1.2.4 Hadoop的发行版本 1.2.5 Apache Hadoo ...

  6. 深度剖析 | 【JVM深层系列】[HotSpotVM研究系列] JVM调优的"标准参数"的各种陷阱和坑点分析(攻克盲点及混淆点)「 1 」

    [易错问题]Major GC和Full GC的区别是什么?触发条件呢? 相信大多数人的理解是Major GC只针对老年代,Full GC会先触发一次Minor GC,不知对否?我参考了R大的分析和介绍 ...

  7. JavaScript:操作符:赋值运算符和空赋值(??=)

    =号是赋值运算,即返回符号右边的结果,同时将结果赋值给符号左边的变量,考虑下面代码的运行结果: 赋值运算b = 1 + 1,做了两件事,先返回符号右边的结果,即2,这个2将参与a = 1 + 2的计算 ...

  8. 2020强网杯青少赛Pursuing_The_Wind战队WRITEUP

    在线文档:https://docs.qq.com/doc/DZkN0RFFaR1ZDdHhD    旧事拾荒,偶遇该文档,既发. 战队信息 战队名称:Pursuing_The_Wind 战队排名:12 ...

  9. 05.深入理解JMM和Happens-Before

    大家好,我是王有志. JMM都问啥? 最近沉迷P5R,所以写作的进度很不理想,但不得不说高卷杏YYDS.话不多说,开始今天的主题,JMM和Happens-Before. 关于它们的问题并不多,基本上只 ...

  10. (数据科学学习手札148)geopandas直接支持gdb文件写出与追加

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,在我之前的某篇文章中为大家介绍 ...