list 实现分页 lamder
时间: 2025-09-15 08:08:20 AIGC 浏览: 3
### 分页实现
使用 Lambda 表达式结合 Java Stream API 可以高效地实现列表的分页功能。通过 `skip()` 和 `limit()` 方法可以快速截取列表中指定范围的数据,从而实现分页逻辑。具体实现步骤如下:
1. **对数据进行排序**:在进行分页前,通常需要先对数据按照特定字段进行排序。可以使用 `sort()` 方法配合 `Comparator.comparing()` 来指定排序规则。例如,对 `UserEntity` 列表按照 `baseId` 升序排序:
```java
resultData.sort(Comparator.comparing(entityTmpl -> entityTmpl.getBaseId()));
```
2. **使用 Lambda 表达式进行分页**:通过 `stream()` 方法将列表转换为流对象,然后使用 `skip((currentPage - 1) * pageSize)` 跳过当前页之前的所有数据,再通过 `limit(pageSize)` 获取当前页需要显示的数据量。最后使用 `Collectors.toList()` 将结果收集为新的列表:
```java
pageList = resultData.stream()
.skip((currentPage - 1) * pageSize)
.limit(pageSize)
.collect(Collectors.toList());
```
3. **处理空值**:在实际开发中,建议对原始数据进行非空判断,避免空指针异常。例如:
```java
if (!ObjectUtils.isEmpty(resultData)) {
// 执行排序和分页逻辑
}
```
### 示例代码
以下是一个完整的示例代码,展示了如何使用 Lambda 表达式实现分页和排序:
```java
import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.ObjectUtils;
import java.util.*;
import java.util.stream.Collectors;
class UserEntity {
private String baseId;
public String getBaseId() {
return baseId;
}
public void setBaseId(String baseId) {
this.baseId = baseId;
}
@Override
public String toString() {
return "UserEntity{baseId='" + baseId + "'}";
}
}
public class PaginationExample {
public static void main(String[] args) {
UserEntity entity = new UserEntity();
UserEntity entity2 = new UserEntity();
UserEntity entity3 = new UserEntity();
UserEntity entity4 = new UserEntity();
entity.setBaseId("a");
entity2.setBaseId("c");
entity3.setBaseId("e");
entity4.setBaseId("b");
List<UserEntity> resultData = Arrays.asList(entity3, entity4, entity, entity2);
List<UserEntity> pageList = new ArrayList<>();
int currentPage = 2, pageSize = 2;
if (!ObjectUtils.isEmpty(resultData)) {
// 按照 baseId 升序排序
resultData.sort(Comparator.comparing(entityTmpl -> entityTmpl.getBaseId()));
System.out.println("根据 baseId 排序后:" + JSON.toJSONString(resultData));
// 分页处理
pageList = resultData.stream()
.skip((currentPage - 1) * pageSize)
.limit(pageSize)
.collect(Collectors.toList());
}
System.out.println("共" + resultData.size() + "条,每页" + pageSize + "条,当前第" + currentPage + "页的数据是:\n" + JSON.toJSONString(pageList));
}
}
```
### 示例输出
运行上述代码后,输出结果如下:
```
根据 baseId 排序后:[{"baseId":"a"},{"baseId":"b"},{"baseId":"c"},{"baseId":"e"}]
共4条,每页2条,当前第2页的数据是:
[{"baseId":"c"},{"baseId":"e"}]
```
该输出表明,已经成功地对原始列表进行了排序和分页处理。
### 总结
使用 Lambda 表达式结合 Stream API 可以非常简洁地实现列表的分页功能。通过 `skip()` 和 `limit()` 方法可以轻松地跳过不需要的数据并截取当前页的数据。同时,结合 `Comparator.comparing()` 可以灵活地对数据进行排序,以满足不同业务需求。
阅读全文
相关推荐




















