使用给定参数过滤Java流

时间:2019-03-11 17:11:21

标签: java spring java-stream

我有一个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)所在的对象添加到列表中。

有没有办法写这样的谓词?使用变量进行比较? 还有使用比较进行过滤的另一种方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

要执行此操作,您只需应用过滤器即可:

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进行汇总