我有一个List<MyObject>
:
My Object:
String name;
String team;
编辑:我想创建一个函数,该函数将使用两个参数过滤此列表:
public List<MyObject> filterMyObjectList (String name, String state, List<MyObject> objectsList)
我需要创建两个过滤器:
第一个将按名称过滤 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());
}
由于您正在检查同一对象的两个条件,因此您可以使用&&
将它们聚合Predicate