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);
    }
}
相关推荐
刘马想放假3 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
北域码匠4 天前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法
Darling噜啦啦11 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
小小工匠12 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾12 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
Qres82112 天前
算法复键——树状数组
数据结构·算法
牛油果子哥q12 天前
并查集(DSU)超精讲,路径压缩、按秩合并、万能模板、连通性判定、最小生成树与刷题实战全解
数据结构·c++·最小生成树·并查集
凌波粒12 天前
LeetCode--491.递增子序列(回溯算法)
数据结构·算法·leetcode
世人万千丶12 天前
成语接龙小应用 - HarmonyOS ArkUI 开发实战-TextInput与List列表-PC版本
华为·list·harmonyos·鸿蒙·鸿蒙系统
WL学习笔记12 天前
单项不带头不循环链表
数据结构·链表