• Java手动分页工具类


    手动分页是一种在 Java 中处理大量数据集时的常见技术。虽然现代框架通常提供自动分页功能,但有时你可能需要在没有框架支持的情况下手动进行分页。下面是一个简单的手动分页的 Java 工具类示例:

    1. import java.util.List;
    2. public class PaginationUtils {
    3.     public List getPage(List dataList, int pageNumber, int pageSize) {
    4.         int startIndex = (pageNumber - 1) * pageSize;
    5.         int endIndex = Math.min(startIndex + pageSize, dataList.size());
    6.         return dataList.subList(startIndex, endIndex);
    7.     }
    8.     public int getTotalPages(List dataList, int pageSize) {
    9.         return (int) Math.ceil((double) dataList.size() / pageSize);
    10.     }
    11. }

    这个 `PaginationUtils` 类提供了两个主要方法:

    1. `getPage`: 根据页码和每页记录数,从数据列表中获取指定页的数据。
    2. `getTotalPages`: 计算数据列表的总页数。

    你可以将这个工具类用于任何数据类型的列表,并且可以方便地调用这两个方法来实现手动分页。

    以下是如何使用这个工具类的示例:

    1. public class Main {
    2.     public static void main(String[] args) {
    3.         // 模拟一些数据
    4.         List dataList = new ArrayList<>();
    5.         for (int i = 1; i <= 100; i++) {
    6.             dataList.add(i);
    7.         }
    8.         int pageNumber = 3;
    9.         int pageSize = 10;
    10.         PaginationUtils paginationUtils = new PaginationUtils<>();
    11.         
    12.         // 获取指定页的数据
    13.         List pageData = paginationUtils.getPage(dataList, pageNumber, pageSize);
    14.         System.out.println("Page " + pageNumber + " data: " + pageData);
    15.         
    16.         // 获取总页数
    17.         int totalPages = paginationUtils.getTotalPages(dataList, pageSize);
    18.         System.out.println("Total pages: " + totalPages);
    19.     }
    20. }

    这个示例演示了如何使用 `PaginationUtils` 类来获取指定页的数据,并计算数据列表的总页数。你可以根据需要对这个工具类进行扩展,以支持更复杂的分页需求。

    总结

    手动分页和自动分页是两种不同的分页方式,它们之间有一些区别:

    手动分页:

    1. 手动控制:手动分页是通过代码逻辑来手动控制数据集的分页过程,通常不依赖于框架或库的自动支持。
    2. 灵活性:手动分页更加灵活,可以根据具体需求自定义分页逻辑,例如根据不同的条件进行不同的分页处理。

    3. 性能影响:手动分页在处理大数据集时可能会对性能产生一定影响,特别是当数据量较大时,需要在内存中加载全部数据,然后再进行分页处理。

    4. 实现成本:手动分页的实现相对较为复杂,需要编写额外的代码来处理分页逻辑,因此在某些情况下可能会增加开发成本。

    自动分页:

    1. 框架支持:自动分页通常由框架或库提供支持,开发者只需简单地配置或调用相应的方法即可实现分页功能,例如在 Spring Data、MyBatis Plus、Hibernate 等框架中都提供了自动分页的功能。

    2. 简化开发:自动分页可以大大简化开发过程,开发者无需编写复杂的分页逻辑,只需调用相应的方法即可完成分页操作。

    3. 性能优化:框架通常会针对分页进行性能优化,例如根据数据库类型生成适当的分页 SQL 语句,以提高查询效率。

    4. 内存占用:自动分页通常会更好地控制内存占用,因为它可以在数据库层面对数据进行分页,而不是将所有数据加载到内存中再进行分页处理。

    总的来说,手动分页和自动分页各有其优缺点,选择哪种方式取决于具体的需求和项目情况。如果需要更灵活的分页逻辑或者不依赖于框架的情况下,可以选择手动分页;而如果开发效率和性能优化是更重要的考虑因素,则可以选择使用框架提供的自动分页功能。

  • 相关阅读:
    Games104现代游戏引擎入门-lecture20 现代游戏引擎架构:面向数据编程与任务系统
    leetcode:滑动窗口----3. 无重复字符的最长子串
    数字图像处理(十六)非局部均值去噪
    Push rejected: Push to origin/master was rejected
    自己实现 SpringMVC 底层机制 系列之-实现任务阶段 4- 完成自定义@Service 注解功能
    Android解析异步消息机制——Android筑基
    VMware 搭建linux操作系统,入门必看
    趣学python编程 (五、常用IDE环境推荐)
    HALCON的python下的使用方法(直接开发,不需要调用.hdev文件)
    【实战技能】培训和指导:深入浅出原则
  • 原文地址:https://blog.csdn.net/m0_66572126/article/details/138682121