java实现将List<VipTaskEntity> taskList 中不包含 List<VipTaskEntity> completedTaskList的数据筛选出来
时间: 2023-07-16 16:13:49 浏览: 77
java判断list中是否包含某个值
可以使用 Java 8 中提供的 Stream API 来实现这个功能。具体实现步骤如下:
1. 将 `completedTaskList` 中的任务 ID 存储到一个 Set 中,方便后续查找。
```java
Set<String> completedTaskIds = completedTaskList.stream()
.map(VipTaskEntity::getId)
.collect(Collectors.toSet());
```
2. 使用 `filter` 方法过滤掉已完成的任务。
```java
List<VipTaskEntity> unfinishedTasks = taskList.stream()
.filter(task -> !completedTaskIds.contains(task.getId()))
.collect(Collectors.toList());
```
上面的代码中,`filter` 方法接收一个 `Predicate` 函数式接口作为参数,用于判断任务是否已完成。如果任务 ID 不在 `completedTaskIds` 集合中,则认为该任务未完成。
完整代码如下:
```java
public List<VipTaskEntity> filterUnfinishedTasks(List<VipTaskEntity> taskList, List<VipTaskEntity> completedTaskList) {
Set<String> completedTaskIds = completedTaskList.stream()
.map(VipTaskEntity::getId)
.collect(Collectors.toSet());
List<VipTaskEntity> unfinishedTasks = taskList.stream()
.filter(task -> !completedTaskIds.contains(task.getId()))
.collect(Collectors.toList());
return unfinishedTasks;
}
```
阅读全文