Java List分页工具

PageUtil.java

复制代码
import com.google.common.collect.Lists;
import com.jd.platform.hotkey.dashboard.common.domain.Page;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

public class PageUtil {
    /**
     * 通用分页工具类
     */
    public static <T> Page<T> pagination(final List<T> data, final int pageSize,
                                         final int pageNum) {
        if (CollectionUtils.isEmpty(data)) {
            return new Page<>(1, 0, new ArrayList<>());
        }
        List<List<T>> lists = Lists.partition(data, pageSize);
        int localPageNum = pageNum;
        if (localPageNum >= lists.size()) {
            localPageNum = lists.size() - 1;
        }
        return new Page<>(localPageNum, data.size(), lists.get(localPageNum));
    }
}

Page.java

复制代码
import java.io.Serializable;
import java.util.List;

public class Page<T> implements Serializable {
	private static final long    serialVersionUID = 1L;
	/**
	 当前第几页
	 */
	private              Integer page;
	/**
	 总共多少条
	 */
	private              int     total;
	private              List<T> rows;

	public Page(Integer page, int total, List<T> rows) {
		this.page  = page;
		this.total = total;
		this.rows  = rows;
	}

	public Integer getPage() {
		return page;
	}

	public void setPage(Integer page) {
		this.page = page;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	public List<T> getRows() {
		return rows;
	}

	public void setRows(List<T> rows) {
		this.rows = rows;
	}

	@Override
	public String toString() {
		return "Page{" +
				"page=" + page +
				", total=" + total +
				", rows=" + rows +
				'}';
	}
}
相关推荐
小布不吃竹1 分钟前
Maven进阶
java·maven
我的golang之路果然有问题6 分钟前
快速了解Go+微服务(概念和一个例子)
开发语言·笔记·后端·学习·微服务·golang
素雪风华11 分钟前
服务容错治理框架resilience4j&sentinel基础应用---微服务的限流/熔断/降级解决方案
java·微服务·sentinel·springboot·服务容错·resilience
_Jyuan_28 分钟前
Android Studio-相对布局(私人笔记)
android·java·ide·经验分享·笔记·android studio
wuyunhang1234561 小时前
Spring AOP概念及其实现
java·后端·spring
不思念一个荒废的名字1 小时前
【黑马JavaWeb+AI知识梳理】后端Web基础01 - Maven
java·前端·maven
福理原乡大王1 小时前
进程地址空间
java·开发语言·算法
南客先生2 小时前
音视频项目在微服务领域的趋势场景题深度解析
java·微服务·面试·性能优化·音视频·高并发
angushine2 小时前
SpringBoot多工程项目微服务install时如何不安装到本地仓库
spring boot·后端·微服务
王中阳Go2 小时前
最新字节跳动运维云原生面经分享
运维·后端·云原生·面试·golang