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 +
				'}';
	}
}
相关推荐
Nobody_Cares34 分钟前
JWT令牌
java
沐浴露z35 分钟前
Kafka入门:基础架构讲解,安装与使用
java·分布式·kafka
神秘的土鸡39 分钟前
从数据仓库到数据中台再到数据飞轮:我的数据技术成长之路
java·服务器·aigc·数据库架构·1024程序员节
vir021 小时前
P1928 外星密码(dfs)
java·数据结构·算法·深度优先·1024程序员节
摇滚侠1 小时前
全面掌握PostgreSQL关系型数据库,备份和恢复,笔记46和笔记47
java·数据库·笔记·postgresql·1024程序员节
掘金码甲哥2 小时前
两张大图一次性讲清楚k8s调度器工作原理
后端
间彧2 小时前
Stream flatMap详解与应用实战
后端
间彧2 小时前
Java Stream流两大实战陷阱:并行流Parallel误用、List转Map时重复键异常
后端
eguid_12 小时前
【开源项目分享】JNSM1.2.0,支持批量管理的jar包安装成Windows服务可视化工具,基于Java实现的支持批量管理已经安装服务的可视化工具
java·开源·jar·1024程序员节·windows服务·jar包安装成服务·exe安装成服务
杯莫停丶3 小时前
设计模式之:享元模式
java·设计模式·享元模式