以下是一个 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);
}
}