【发布时间】:2020-03-06 01:27:11
【问题描述】:
我有一个 Person 类:
@Data
public class Person {
private Integer id;
private String status;
}
我有一个名为 personList 的人员列表:
[{
"id": null,
"status": "inactive"
},
{
"id": 2,
"status": "inactive"
},
{
"id": null,
"status": "active"
}]
现在我需要找到所有状态为“非活动”的人,无论此人是否有 ID。如果某人没有 ID,但状态为“活动”,则也包括该人。我正在使用 Java 流进行过滤:
List<Person> inactivePersonList =
personList.stream()
.filter(person -> person.getStatus().equals("inactive"))
.filter(person -> person.getId() == null && person.getStatus().equals("active"))
.collect(Collectors.toList());
直播后的结果是没人接。第一个人没有被接走是因为它没有通过第二道过滤器,最后一个人没有被捡到是因为它没有通过第一道过滤器。
我想我可以通过使用OR 将两个过滤器合并为一个来修复它,但我试图让每个过滤器都变得简单,所以在进行更改之前,我想问一下是否有更好的方法做。谢谢。
【问题讨论】:
-
使用一个过滤器,但创建一种方法来过滤掉两者的“非活动”用户。并使用
enum。 -
当您已经知道在另一个
filter中使用&&时,我没有明显错过在过滤器中使用||的条件,而这并不是真正需要的。
标签: java java-8 java-stream