帮我完成java代码:定义分页泛型工具类 PageUtils<T> pageIndex 当前页码 pageSize 页面容量 totalPages 总页数 totalCounts 总记录数 nextPage 下一页的页码 prePage 上一页页码 T list 分页数据
时间: 2024-09-10 16:20:18 浏览: 54
当然可以,这里是一个简单的Java代码示例,用于创建一个通用的PageUtils工具类,它接受泛型T作为类型参数,表示分页的数据:
```java
import java.util.ArrayList;
import java.util.List;
public class PageUtils<T> {
private static final int DEFAULT_SIZE = 10; // 默认页面大小
private static final int MAX_INT = Integer.MAX_VALUE;
public PageUtils(int pageIndex, int pageSize, int totalPages, int totalCounts) {
this.pageIndex = Math.min(pageIndex, totalPages);
this.pageSize = Math.min(Math.max(pageSize, DEFAULT_SIZE), MAX_INT); // 确保页面大小在合理范围内
this.totalPages = totalPages;
this.totalCounts = totalCounts;
this.nextPage = calculateNextPage();
this.prePage = calculatePreviousPage();
this.list = createPaginatedList();
}
private int pageIndex;
private int pageSize;
private int totalPages;
private int totalCounts;
private int nextPage;
private int prePage;
private List<T> list;
private int calculateNextPage() {
if (pageIndex < totalPages - 1) {
return pageIndex + 1;
} else {
return totalPages;
}
}
private int calculatePreviousPage() {
if (pageIndex > 1) {
return pageIndex - 1;
} else {
return 1;
}
}
private List<T> createPaginatedList() {
int start = (pageIndex - 1) * pageSize;
int end = Math.min(start + pageSize, totalCounts);
// 假设你的数据源支持按索引获取
List<T> dataList = getDataFromDataSource(start, end); // 实际替换为从数据源获取数据的方法
if (dataList.isEmpty()) {
list = new ArrayList<>();
} else {
list = dataList.subList(start, end);
}
return list;
}
// 这个方法需要根据实际的数据源进行替换,例如数据库查询、文件读取等
private List<T> getDataFromDataSource(int start, int end) {
// 这里只是一个占位符,你需要将这个方法替换为实际的实现
return new ArrayList<>();
}
// 提供getter方法以便外部访问
public int getPageIndex() {
return pageIndex;
}
// ...其他getter方法类似
阅读全文