使用给定参数过滤Java流

使用给定参数过滤Java流,java,spring,java-stream,Java,Spring,Java Stream,我有一个列表: 编辑:我想创建一个使用两个参数筛选此列表的函数: public List<MyObject> filterMyObjectList (String name, String state, List<MyObject> objectsList) 公共列表过滤器MyObjectList(字符串名称、字符串状态、列表对象列表) 我需要创建两个过滤器: 第一个将按名称过滤MyObject,并将仅向返回的列表中添加MyObject.getName().equal

我有一个
列表

编辑:我想创建一个使用两个参数筛选此列表的函数:

public List<MyObject> filterMyObjectList (String name, String state, List<MyObject> objectsList)
公共列表过滤器MyObjectList(字符串名称、字符串状态、列表对象列表)
我需要创建两个过滤器:

第一个将按名称过滤MyObject,并将仅向返回的列表中添加
MyObject.getName().equals(name)
的对象

第二个将由团队使用我拥有的另一个函数(
getState(MyObject.getTeam())
)过滤MyObject,并将只向列表中添加
getState(MyObject.getTeam()).equals(state)
的对象

有没有办法写出这样的谓词?使用变量进行比较? 有没有其他方法可以使用比较进行筛选


谢谢

要做到这一点,您只需应用一个过滤器:

public List<MyObject> filterMyObjectList (String name, String state, List<MyObject> objectsList) {
   return objectsList.stream()
                     .filter(obj -> obj.getName().equals(name) && getState(obj.getTeam()).equals(state))
                     .collect(Collectors.toList());
}
公共列表过滤器MyObjectList(字符串名称、字符串状态、列表对象列表){
返回objectsList.stream()
.filter(obj->obj.getName().equals(name)和&getState(obj.getTeam()).equals(state))
.collect(Collectors.toList());
}

由于您正在检查同一对象的两个条件,因此可以使用
谓词中的
&&
将它们聚合到一起,因为您已经有了几个
过滤器
调用,所以不清楚您到底在问什么。你能详细说明一下吗?你想过滤什么?详细描述你的问题,你被困在哪里?
public List<MyObject> filterMyObjectList (String name, String state, List<MyObject> objectsList) {
   return objectsList.stream()
                     .filter(obj -> obj.getName().equals(name) && getState(obj.getTeam()).equals(state))
                     .collect(Collectors.toList());
}