java8 list 分页,获取 分页后的 list 和 总页数 的 工具类

以下是一个 Java 8 实现的用于对 List 进行分页的工具类,该工具类可以返回分页后的 List 以及总页数。

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class ListPaginationUtil {

    /**
     * 对列表进行分页
     * @param list 原始列表
     * @param pageNumber 当前页码,从 1 开始
     * @param pageSize 每页的记录数
     * @param <T> 列表元素的类型
     * @return 分页后的列表
     */
    public static <T> List<T> paginate(List<T> list, int pageNumber, int pageSize) {
        if (list == null || list.isEmpty()) {
            return new ArrayList<>();
        }
        int startIndex = (pageNumber - 1) * pageSize;
        if (startIndex >= list.size()) {
            return new ArrayList<>();
        }
        int endIndex = Math.min(startIndex + pageSize, list.size());
        return list.subList(startIndex, endIndex);
    }

    /**
     * 计算列表分页后的总页数
     * @param list 原始列表
     * @param pageSize 每页的记录数
     * @param <T> 列表元素的类型
     * @return 总页数
     */
    public static <T> int getTotalPages(List<T> list, int pageSize) {
        if (list == null || list.isEmpty()) {
            return 0;
        }
        return (int) Math.ceil((double) list.size() / pageSize);
    }
}

工具类测试:

java 复制代码
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // 示例列表
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        int pageNumber = 2;
        int pageSize = 3;

        // 获取分页后的列表
        List<Integer> paginatedList = ListPaginationUtil.paginate(list, pageNumber, pageSize);
        System.out.println("分页后的列表: " + paginatedList);

        // 获取总页数
        int totalPages = ListPaginationUtil.getTotalPages(list, pageSize);
        System.out.println("总页数: " + totalPages);
    }
}
相关推荐
自我意识的多元宇宙11 分钟前
树与二叉树--二叉树的存储结构
数据结构
自我意识的多元宇宙4 小时前
二叉树的遍历和线索二叉树--二叉树的遍历
数据结构
qq_5024289905 小时前
清华大学与微软亚洲研究院出品:Kronos 本地部署教程
数据结构·python·金融量化·kronos开源模型
C雨后彩虹7 小时前
最多等和不相交连续子序列
java·数据结构·算法·华为·面试
cpp_25017 小时前
P2347 [NOIP 1996 提高组] 砝码称重
数据结构·c++·算法·题解·洛谷·noip·背包dp
今天又在写代码8 小时前
数据结构v2
数据结构
Rabitebla9 小时前
C++ 和 C 语言实现 Stack 对比
c语言·数据结构·c++·算法·排序算法
深邃-9 小时前
【数据结构与算法】-顺序表链表经典算法
java·c语言·数据结构·c++·算法·链表·html5
就爱学编程9 小时前
惊叹数据结构之美,品味排序算法之妙:对计排、桶排的详细介绍
数据结构·算法·排序算法
努力努力再努力wz9 小时前
【MySQL入门系列】掌握表数据的 CRUD:DML 核心语法与执行逻辑解析
android·开发语言·数据结构·数据库·c++·b树·mysql