Java实现自制分页插件
程序员文章站
2022-07-14 23:08:25
...
在一个项目中分页是必不可少的,我自己编写了一个,在数据量较少的时候自认为还是不错的。如果想要使用,直接复制代码就可以。就算不符合需求,还可以再改。下面的代码,注释很详细。
package blog.util;
import java.util.ArrayList;
import java.util.List;
/**
* 分页,创建对象时传入总列表以及每页最大数,<br>
* 可通过getPaging(int page)或getPaging()方法获取想要的分页,<br>
* 其中 page 为想要的分页页码,默认为1。
* @param <T> 传入的总列表中元素的类型
*/
public class Paging<T> {
/**
* 当前页码
*/
private int pageNum = 1;
/**
* 每页最大条数
*/
private final int pageCount;
/**
* 总条数
*/
private final int totalCount;
/**
* 总页数
*/
private int totalPage;
/**
* 当前页条数
*/
private int currentCount;
/**
* 总列表
*/
private final List<T> totalList;
/**
* 创建 Paging 对象,用于分页
* @param pageCount 每页最大条数
* @param totalList 总列表
*/
public Paging(int pageCount, List<T> totalList) {
this.pageCount = pageCount;
this.totalList = totalList;
// 总条数为需要处理的商品列表条数
this.totalCount = totalList.size();
// 设置总页数
this.setTotalPage();
}
/**
* 设置总页数
*/
private void setTotalPage(){
double a = (double) totalCount / (double) pageCount;
totalPage = (int) Math.ceil(a);
}
/**
* 获取期待页码的列表,从1开始
* @param pageNum 想要获取的分页页码
* @return 当前分页显示的数据列表
*/
public List<T> getPaging(int pageNum){
// 设置当前页码
this.pageNum = pageNum;
// 每页最大条数
int pageCount = this.pageCount;
// 总列表
List<T> totalList = this.totalList;
// 当前页列表
List<T> pageList = new ArrayList<>();
// 想要获取的分页的数据在总列表中开始处的索引值
int start = (pageNum - 1) * pageCount;
// 结束处的索引
int end = start + pageCount;
if (end > totalList.size()){
// 如果结束处的索引值比总列表的长度大,那么结束处的索引为总列表长度
end = totalList.size();
}
for (int i = start; i < end; i++) {
// 通过循环将总列表中指定索引区间内的元素添加进新列表
pageList.add(totalList.get(i));
}
// 当前页条数
this.currentCount = pageList.size();
return pageList;
}
/**
* 获取当前分页的商品列表
* @return 当前分页显示的数据列表
*/
public List<T> getPaging(){
return this.getPaging(this.pageNum);
}
/**
* 获取 总条数
* @return totalCount 总条数
*/
public int getTotalCount() {
return totalCount;
}
/**
* 获取 总页数
* @return totalPage 总页数
*/
public int getTotalPage() {
return totalPage;
}
/**
* 获取 当前页条数,<br>
* 未调用 getPaging() 方法前为 0
* @return currentCount 当前页条数
*/
public int getCurrentCount() {
return currentCount;
}
/**
* 获取 当前页码,默认为1
* @return pageNum 当前页码
*/
public int getPageNum() {
return pageNum;
}
/**
* 设置当前页码
* @param pageNum 当前页码
*/
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
}