1.为什么要用内存分页?
在某些情况,使用数据库分页特别麻烦的情况下,尤其是超级复杂的sql。这时候数据库分页不合适,就需要用到内存分页了。
数据库分页
在上篇文章中小编已经讲解过数据库实现分页的方法了,该文就不在介绍。
废话不多说,直接上源码。
2.内存分页源码
package com.bronzesoft.rdm;
import java.util.List;
/**
* list 内存分页
*/
public class PageUtil {
public static Integer count;
private static final Integer pageNum = 1;
private static final Integer pageSize = 10;
public static List startPage(List list){
return startPage(list,pageNum,pageSize);
}
/**
* 开始分页
*
* @param list
* @param pageNum 页码
* @param pageSize 每页多少条数据
* @return
*/
public static List startPage(List list, Integer pageNum, Integer pageSize) {
if (list == null) {
return null;
}
if (list.size() == 0) {
return null;
}
Integer count = list.size(); //记录总数
PageUtil.count = list.size();
Integer pageCount = 0; //页数
if (count % pageSize == 0) {
pageCount = count / pageSize;
} else {
pageCount = count / pageSize + 1;
}
int fromIndex = 0; //开始索引
int toIndex = 0; //结束索引
if (pageNum > pageCount) {
pageNum = pageCount;
}
if (!pageNum.equals(pageCount)) {
fromIndex = (pageNum - 1) * pageSize;
toIndex = fromIndex + pageSize;
} else {
fromIndex = (pageNum - 1) * pageSize;
toIndex = count;
}
List pageList = list.subList(fromIndex, toIndex);
return pageList;
}
}
3.源码解读
如果不传是第几页,以及每页的大小,默认值是1跟10.
主要原理就是取list的sublist,计算出开始的索引跟结束的索引就行了。
计算总的页数。
超出范围就取最后一页。
使用方法特别简单
总页数就是count值,总条数就是list的size.
直接调用就行。
4.前端界面
如果这篇文章帮到了你,希望你可以帮小编投投票,47号峰啊疯了,投完可以抽奖哦
https://blog.51cto.com/blog-contest/index#part4