Java 自定義 List<T> 分頁工具

时间:2024-04-13 07:05:25
rt com.google.common.collect.Lists; import java.util.Arrays; import java.util.Collections; import java.util.List; /** * @ClassName: MyPageHelper * @Descripution: List<T>分頁工具 **/ public class MyPageHelper<T> { public List<T> splitList(List<T> list, int page, int pageSize) { if (page <= 0) { throw new IllegalArgumentException("MyPageHelper error: page number cannot be less than or equal to zero"); } if (pageSize <= 0) { throw new IllegalArgumentException("MyPageHelper error: page size cannot be less than or equal to zero"); } int fromIndex = (page - 1) * pageSize; if (fromIndex >= list.size()) { return Collections.emptyList(); } int toIndex = fromIndex + pageSize; if (toIndex > list.size()) { toIndex = list.size(); } List<List<T>> partition = Lists.partition(list.subList(fromIndex, toIndex), pageSize); return partition.isEmpty() ? null : partition.get(0); } // 測試 public static void main(String[] args) { // 使用方法 MyPageHelper<Integer> paginationHelper = new MyPageHelper<>(); List<Integer> fullList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); int page = 3; // 第二頁 int pageSize = 4; // 每頁3條記錄 List<Integer> pages = paginationHelper.splitList(fullList, page, pageSize); System.out.println(pages); }