分页 java_JAVA中List集合分页

package com.brit.os.util;

import java.util.ArrayList;

import java.util.List;

/**

* 通用分页工具类,该工具类分页指定泛型的List对集合

*

* @author evan

* @time 2010-01-12

* @param

* 指定的泛型

*/

public class Page

{

/**

* 每页显示的记录数

*/

private int pageRecords = 20;

/**

* 总记录数

*/

private int totalRecord;

/**

* 分页切割的启始点

*/

private int startIndex;

/**

* 分页切割的结束点

*/

private int endIndex;

/**

* 总页数

*/

private int totalPage;

/**

* 当前页数

*/

private int currentPage = 1;

/**

* 总记录集合

*/

private List totalList;

public Page(List totalList)

{

super();

this.totalList = totalList;

innit();

}

/**

* 初始化该分页对象

*/

private void innit()

{

if (null != totalList)

{

totalRecord = totalList.size();

if (totalRecord % this.pageRecords == 0)

{

this.totalPage = totalRecord / this.pageRecords;

}

else

{

this.totalPage = totalRecord / this.pageRecords + 1;

}

}

}

/**

* 得到分页后的数据

*

* @return 分页数据

*/

public List getPage(int currentPage)

{

this.currentPage = currentPage;

if (currentPage <= 0)

{

this.currentPage = 1;

}

if (currentPage >= this.totalPage)

{

this.currentPage = this.totalPage;

}

List subList = new ArrayList();

if (null != this.totalList)

{

subList.addAll(this.totalList.subList(getStartIndex(), getEndIndex()));

}

return subList;

}

/**

* 设置每页显示的记录条数,如果不设置则默认为每页显示30条记录

*

* @param pageRecords

* 每页显示的记录条数(值必需介于10~100之间)

*/

public void setPageRecords(int pageRecords)

{

if (pageRecords >= 10 && pageRecords <= 100)

{

this.pageRecords = pageRecords;

innit();

}

}

public int getStartIndex()

{

if (null == this.totalList)

{

return 0;

}

this.startIndex = (getCurrentPage() - 1) * this.pageRecords;

if (startIndex > totalRecord)

{

startIndex = totalRecord;

}

if (startIndex < 0)

{

startIndex = 0;

}

return startIndex;

}

public int getEndIndex()

{

if (null == this.totalList)

{

return 0;

}

endIndex = getStartIndex() + this.pageRecords;

if (endIndex < 0)

{

endIndex = 0;

}

if (endIndex < getStartIndex())

{

endIndex = getStartIndex();

}

if (endIndex > this.totalRecord)

{

endIndex = this.totalRecord;

}

return endIndex;

}

/***

* 获取总页数

* @return

*/

public int getTotalPage()

{

return totalPage;

}

/**

* 获取List集合中的总条数

* @return

*/

public int getTotalRecord()

{

return totalRecord;

}

public boolean isEndPage()

{

return this.currentPage == this.totalPage;

}

/**

* 获取下一页的页数

*

* @return 下一页的页数

*/

public int getNextPage()

{

int nextPage = this.currentPage + 1;

if (nextPage > this.totalPage)

{

nextPage = this.totalPage;

}

if (nextPage <= 0)

{

nextPage = 1;

}

return nextPage;

}

/**

* 获取上一页的页数

*

* @return 上一页的页数

*/

public int getPrivyPage()

{

int privyPage = this.currentPage - 1;

if (privyPage > this.totalPage)

{

privyPage = this.totalPage;

}

if (privyPage <= 0)

{

privyPage = 1;

}

return privyPage;

}

/**

* 获取当前页页数

* @return

*/

public int getCurrentPage()

{

return currentPage;

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-03-29 15:15

浏览 7714

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值