java分页查询list
时间: 2025-06-12 09:37:56 浏览: 7
### Java 分页查询 List 实现方法 示例
在 Java 中实现分页查询时,可以使用多种方式来处理数据的分页逻辑。以下是一个基于 `List` 的分页查询实现示例,适用于内存中的数据分页场景。
```java
import java.util.ArrayList;
import java.util.List;
public class PaginationExample {
public static void main(String[] args) {
// 创建一个模拟的列表数据
List<String> dataList = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
dataList.add("Item " + i);
}
int pageNum = 2; // 当前页码
int pageSize = 10; // 每页显示的记录数
// 调用分页方法
PageResult<String> pageResult = paginate(dataList, pageNum, pageSize);
// 输出分页结果
System.out.println("总记录数:" + pageResult.getTotalCount());
System.out.println("总页数:" + pageResult.getTotalPages());
System.out.println("当前页:" + pageResult.getPageNum());
System.out.println("每页大小:" + pageResult.getPageSize());
System.out.println("数据:" + pageResult.getData());
}
public static <T> PageResult<T> paginate(List<T> list, int pageNum, int pageSize) {
if (list == null || list.isEmpty()) {
return new PageResult<>(0, 0, pageNum, pageSize, new ArrayList<>());
}
int totalCount = list.size(); // 总记录数
int totalPages = (int) Math.ceil((double) totalCount / pageSize); // 总页数
// 校验页码是否超出范围
if (pageNum < 1 || pageNum > totalPages) {
return new PageResult<>(totalCount, totalPages, pageNum, pageSize, new ArrayList<>());
}
// 计算分页起始和结束索引
int startIndex = (pageNum - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, totalCount);
// 提取分页数据
List<T> subList = list.subList(startIndex, endIndex);
return new PageResult<>(totalCount, totalPages, pageNum, pageSize, subList);
}
}
class PageResult<T> {
private int totalCount; // 总记录数
private int totalPages; // 总页数
private int pageNum; // 当前页码
private int pageSize; // 每页显示的记录数
private List<T> data; // 当前页的数据
public PageResult(int totalCount, int totalPages, int pageNum, int pageSize, List<T> data) {
this.totalCount = totalCount;
this.totalPages = totalPages;
this.pageNum = pageNum;
this.pageSize = pageSize;
this.data = data;
}
public int getTotalCount() {
return totalCount;
}
public int getTotalPages() {
return totalPages;
}
public int getPageNum() {
return pageNum;
}
public int getPageSize() {
return pageSize;
}
public List<T> getData() {
return data;
}
}
```
上述代码实现了基于内存中 `List` 的分页查询功能。通过计算起始索引和结束索引,提取当前页的数据,并返回一个包含分页信息的结果对象[^5]。
### 注意事项
- 如果数据量较大,建议直接在数据库层面进行分页查询,以减少内存占用。
- 在实际项目中,可以根据需求扩展 `PageResult` 类,例如添加排序、过滤等功能。
阅读全文
相关推荐

















