0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点#java内存分页源码解析

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.源码解读

#yyds干货盘点#java内存分页源码解析_源码解读

如果不传是第几页,以及每页的大小,默认值是1跟10.

#yyds干货盘点#java内存分页源码解析_源码解读_02

主要原理就是取list的sublist,计算出开始的索引跟结束的索引就行了。

#yyds干货盘点#java内存分页源码解析_数据库分页_03

计算总的页数。

#yyds干货盘点#java内存分页源码解析_源码解读_04

超出范围就取最后一页。

使用方法特别简单

#yyds干货盘点#java内存分页源码解析_数据库分页_05

总页数就是count值,总条数就是list的size.

直接调用就行。

4.前端界面

#yyds干货盘点#java内存分页源码解析_源码解读_06


如果这篇文章帮到了你,希望你可以帮小编投投票,47号峰啊疯了,投完可以抽奖哦

 https://blog.51cto.com/blog-contest/index#part4

#yyds干货盘点#java内存分页源码解析_数据库分页_07

#yyds干货盘点#java内存分页源码解析_数据库分页_08



举报

相关推荐

0 条评论