public class PageBySubListUtil {
/**
* 分页方法
*
* @param list 源数据
* @param currentPage 当前页页码,从1开始记
* @param pageSize 每页显示几条
* @return
*/
public static <T> List<T> getPageList(List<T> list, int currentPage, int pageSize) {
if(list == null || list.size() == 0){
return null;
}
int total = list.size();
// 总页数
int pageNum = total % pageSize == 0 ? total / pageSize : total / pageSize + 1; //总页数
if(currentPage < 1 || currentPage > pageNum){
return null;
}
int fromIndex = 0; // 从哪里开始截取
int toIndex = 0; // 截取几个
if (list == null || list.size() == 0) {
return null;
}
// 当前页小于或等于总页数时执行
if (currentPage <= pageNum && currentPage != 0) {
fromIndex = (currentPage - 1) * pageSize;
if (currentPage == pageNum) {
toIndex = list.size();
} else {
toIndex = currentPage * pageSize;
}
}
return list.subList(fromIndex, toIndex);
}
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(111);
list.add(222);
list.add(333);
list.add(444);
list.add(555);
list.add(666);
list.add(777);
list.add(888);
list.add(999);
list.add(1000);
int count = list.size();
int currentPage =3;
int pageSize = 4;
// int pageNum = 2;
int totalPage=(count%pageSize==0)?(count/pageSize):(count/pageSize+1);
System.out.println("总页数:" + totalPage);
List<Integer> pageList = getPageList(list, currentPage, pageSize);
for (Integer i : pageList) {
System.out.println(i);
}
}
}