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. 2022-11-03 Acwing每日一题

    本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我会认真改正的.同时也希望 ...

  2. Bugku login1

    打开是个普普通通的登录界面,盲猜是注入题,先看看源码吧,没找到什么有用的信息,那就先注册试试 注册admin就已经存在,可能待会就爆破admin的密码也可能,因为没有验证嘛 试试注册其他的 登录发现他 ...

  3. Aspose.Cells设置单元格背景色不生效

    Style.BackgroundColor property 获取或设置样式的背景颜色.public Color BackgroundColor { get; set; } 评论 如果要设置单元格的颜 ...

  4. java基础知识-lambda表达式

    一.什么是lambda? 在Java中,我们可以将一个值赋值给一个Java变量. int aValue = 129; String aString = "hello world"; ...

  5. 关于python实现html转word(docx)

    安装 linux平台 sudo apt install pandoc pip3 install pypandoc 示例代码 import pypandoc output = pypandoc.conv ...

  6. postgresql函数:定期删除模式下指定天数前的表数据及分区物理表

    一.现有函数-- 1.现有函数调用select ods.deletePartitionIfExists('fact_ship' || '_' || to_char(CURRENT_DATE - INT ...

  7. 动手实验查看MySQL索引的B+树的高度

    一:文中几个概念 h:统称索引的高度: h1:主键索引的高度: h2:辅助索引的高度: k:非叶子节点扇区个数. 二:索引结构 叶子节点其实是双向链表,而叶子节点内的行数据是单向链表,该图未体现. 磁 ...

  8. RocketMQ Connect 构建流式数据处理平台

    本文作者:孙晓健,Apache RocketMQ Committer 01 RocketMQ Connect RocketMQ Connect 是一款可扩展的在 RocketMQ 与其他系统之间做流式 ...

  9. 网易云VIP音乐NCM文件转MP3,C语言版本。

    前言 网易云的Vip音乐下载下来,格式不是mp3/flac这种通用的音乐格式,而是经过加密的ncm文件.只有用网易云的音乐App才能够打开.于是想到可不可以把.ncm文件转换成mp3或者flac文件, ...

  10. JavaScript:操作符:操作符的特点

    在JS中,所有的操作符,都同时在做两件事,第一件事是进行计算,第二件事是返回计算的结果,这个结果需要有变量去接收,否则就成为无人认领的数据而被垃圾回收: 在JS中,有很多不常用的操作符以及语法,容易让 ...