逻辑分页

自己写的逻辑分页,如果没有Lombook插件,请自己生成getter and setter

package com.kando.harass.dto;

/**
 * @author: lzl
 * @description:
 * @createTime: 2020/11/5 0005
 */

import lombok.Data;

import java.util.ArrayList;
import java.util.List;
public class Page<T> {
	//数据
	private List<T> list;
	//当前页
	private int page;
	//当前页条数
	private int limit;
	//总页数
	private int total;
	//最后一页页码
	private int lastPage;

	public Page(int page, int limit, List<T> list) {
		if (list.isEmpty()) {
			this.list = new ArrayList<>();
			return;
		}
		if (limit == 0) {
			throw new RuntimeException("limit不能为0");
		}
		this.limit = limit;
		this.page = page;
		this.total = list.size();
		if (total % limit == 0) {
			this.lastPage = total / limit;
		} else {
			lastPage = total / limit + 1;
		}
		if (page > lastPage) {
			throw new RuntimeException("当前页超过了最大页");
		}
		this.list = init(list);
	}

	//对传入的数据分页
	public List<T> init(List<T> list) {
		List<T> result = new ArrayList<>();
		try {
			//不是最后一页
			if (page != lastPage) {
				result.addAll(list.subList((page - 1) * limit, page * limit));
			} else {
				if (total % limit == 0) {
					result.addAll(list.subList((lastPage - 1) * limit, ((lastPage) * limit)));
				} else {
					result.addAll(list.subList((lastPage - 1) * limit, ((lastPage - 1) * limit) + (total % limit)));
				}
			}
			return result;
		} catch (IllegalArgumentException e) {
			return result;
		}
	}

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值