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 +
				'}';
	}
}
相关推荐
橙序员小站2 小时前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
怒放吧德德2 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆3 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
开心就好20255 小时前
UniApp开发应用多平台上架全流程:H5小程序iOS和Android
后端·ios
悟空码字5 小时前
告别“屎山代码”:AI 代码整洁器让老项目重获新生
后端·aigc·ai编程
小码哥_常5 小时前
大厂不宠@Transactional,背后藏着啥秘密?
后端
奋斗小强5 小时前
内存危机突围战:从原理辨析到线上实战,彻底搞懂 OOM 与内存泄漏
后端
小码哥_常6 小时前
Spring Boot接口防抖秘籍:告别“手抖”,守护数据一致性
后端
心之语歌6 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
None3216 小时前
【NestJs】基于Redlock装饰器分布式锁设计与实现
后端·node.js