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