ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

对List集合进行分页

2022-05-30 17:32:04  阅读:139  来源: 互联网

标签:return 分页 int List pageRecords lt 集合 currentPage public


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);

 

标签:return,分页,int,List,pageRecords,lt,集合,currentPage,public
来源: https://www.cnblogs.com/jthr/p/16327519.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有