java 内存分页_Java内存分页工具类

以下是我写的 Java 内存分页工具类,可以直接使用。如有 Bug,欢迎评论指点!

PageUtil.java

package com.cnblogs.cikai;

import com.cnblogs.cikai.BaseInfoBean;

import java.util.ArrayList;

import java.util.List;

/**

* 内存分页工具类

*

* @author cikai

* @date 02/27/2020

*/

public class PageUtil {

// 默认第 1 页

private final static Integer DEFAULT_PAGE = 1;

// 默认每页 10 条

private final static Integer DEFAULT_ROWS = 10;

/**

* 分页实现

*

* @param bean,参数主体,包含page(页数)和rows(条数)

* @param dataList,待分页数据集合

* @return 分页后的数据

*/

public static Object paging(BaseInfoBean bean, List extends BaseInfoBean> dataList) {

int start = 0;

int end = 0;

if (bean.getRows() == null) {

bean.setRows(DEFAULT_ROWS);

}

if (bean.getPage() == null) {

bean.setPage(DEFAULT_PAGE);

} else {

start = (bean.getPage() - 1) * bean.getRows();

}

end = Math.min((bean.getPage() * bean.getRows()), dataList.size());

if (start < 0 || end < 0) {

return new ArrayList<>();

}

if (start < end) {

return dataList.subList(start, end);

}

return new ArrayList<>();

}

/**

* 分页转换,从 [page, rows] 转换为 [page, offset]

*

* [page, rows] => [第M页,每页N条]

* [page, offset] => [每页X条,从第Y个开始]

*

* @param bean

* @return

*/

public static BaseInfoBean rowsToOffset(BaseInfoBean bean) {

BaseInfoBean pageOffset = new BaseInfoBean();

if (bean.getPage() == null) {

pageOffset.setPage(bean.getRows());

return pageOffset;

}

if (bean.getRows() == null) {

return new BaseInfoBean();

}

pageOffset.setPage(bean.getRows());

pageOffset.setOffset((bean.getPage() - 1) * bean.getRows());

if (pageOffset.getPage() < 0 || pageOffset.getOffset() < 0) {

return new BaseInfoBean();

}

return pageOffset;

}

/**

* ID分页实现

*

* @param bean,参数主体,包含page(页数)和rows(条数)

* @param ids,待分页id集合

* @return 分页后的id集合

*/

public static List pagingIds(BaseInfoBean bean, List ids) {

int start = 0;

int end = 0;

if (bean.getRows() == null) {

bean.setRows(DEFAULT_ROWS);

}

if (bean.getPage() == null) {

bean.setPage(DEFAULT_PAGE);

} else {

start = (bean.getPage() - 1) * bean.getRows();

}

end = Math.min((bean.getPage() * bean.getRows()), ids.size());

if (start < 0 || end < 0) {

return new ArrayList<>();

}

if (start < end) {

return ids.subList(start, end);

}

return new ArrayList<>();

}

}

BaseInfoBean.java

package com.cnblogs.cikai;

/**

* 业务数据基类

*

* @author cikai

* @date 02/27/2020

*/

public class BaseInfoBean {

/**

* 第几页

*/

private Integer page;

/**

* 每页的条数

*/

private Integer rows;

/**

* 偏移量,当页从第几条数据开始

*/

private Integer offset;

/**

* 业务数据结构定义

*/

private Object data;

// TODO: 生成 Getter 和 Setter 方法

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值