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 +
				'}';
	}
}
相关推荐
悟能不能悟14 分钟前
Spring Boot中如何对密码等敏感信息进行脱敏处理
spring boot·后端·python
攻城狮7号1 小时前
Java三十而立:Java 的30岁与Spring AI 1.0正式发布
java·人工智能·深度学习·ai·spring ai
Su米苏1 小时前
Spring Boot 中修改 HTTP 响应状态码(即 `response.status`)可以通过以下几种方式实现
java
Java永无止境1 小时前
JavaSE常用API之Runtime类:掌控JVM运行时环境
java·开发语言·jvm
caihuayuan51 小时前
Vue3 Composition API: 企业级应用最佳实践方案
java·大数据·spring boot·后端·课程设计
只在空想家1 小时前
SpringBoot JAR 启动原理
java·spring boot·后端·jar
步行cgn1 小时前
函数式编程思想详解
java·开发语言·windows
徐子宸1 小时前
Docker面试题(1)
java·docker·容器
大坏波1 小时前
C/C++内存管理
java·c语言·c++
轮到我狗叫了2 小时前
力扣.H指数力扣.字母异位词力扣.289生命游戏力扣452.用最小数量的箭引爆气球力扣.86分隔链表力扣.轮转数组
java·数据结构·算法