Java分页工具
import java.util.ArrayList;
import java.util.List;
/**
* 分页
*/
public class PageUtil<T>{
/**
* 所有的记录
*/
private List<T> allList=null;
/**
* 每页需要显示的数据
*/
private List<T> pageList=null;
/**
* 所有记录总条数
*/
private int sum=0;
//每页显示记录条数
private int per_record;
/**
* 总页数
*/
private int page_counts=0;
/**
* 当前页
*/
private int this_page=0;
public PageUtil(List<T> list,int currentPage,int pageSize) {
//配置每页显示记录数
this.per_record=pageSize;
//配置所有记录
this.allList=list;
//配置记录总数
this.sum=this.allList.size();
//配置总页数
calculatePerRecord();
//配置当前页页码
setThisPage(currentPage);
//配置当前页记录
setThisList();
}
/**
*
* @Description:<p>配置当前页页码</p>
*/
public void setThisPage(int Page) {
if(Page<=1) {
Page=1;
}else if(Page>=this.page_counts) {
Page=this.page_counts;
}
//内部真正页码是从0开始 所以减一
this.this_page =Page-1;
//每次设置页码的时候都从新配置一下当前页的数据
setThisList();
}
/**
*
* @Description:<p>计算总页数</p>
*/
private void calculatePerRecord() {
//如果所有记录list为空,直接终止计算
if(this.getAllList()==null) {
return ;
}
//如果所有记录刚刚好整除每页显示的记录条数
int sumPage=this.sum/this.per_record;
//否则就多了一页不完全页
if(this.sum%this.per_record>0) {
++sumPage;
}
this.page_counts = sumPage;
}
/**
*
* @Description:<p>配置当前页是数据</p>
*/
private void setThisList(){
//每页开始索引
int index_start=this.this_page*this.per_record;
//每页结束索引
int index_end=(this.this_page+1)*this.per_record>this.allList.size()?
this.allList.size():(this.this_page+1)*this.per_record;
//存数据进当前页之前 先清空当前页的数据
this.pageList=new ArrayList();
for (int i = index_start; i <index_end; ++i) {
this.pageList.add(this.allList.get(i));
}
}
public List<T> getAllList() {
return allList;
}
public List<T> getPageList() {
return pageList;
}
public int getSum() {
return sum;
}
public int getPer_record() {
return per_record;
}
/**
*
* @Description:<p>配置每页显示的记录条数</p>
*/
public void setPer_record(int per_record) {
this.per_record = per_record;
//重新配置每页显示的记录条数后,需要重新配置总页数和当前页的记录
setThisList();
calculatePerRecord();
}
public int getPage_counts() {
return page_counts;
}
public int getThis_page() {
return this_page+1;
}
}