使用给定参数过滤Java流

问题描述 投票:0回答:1

我有一个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)的对象。

有没有办法写这样的谓词?使用变量进行比较?有没有其他方法来过滤使用比较?

谢谢!

java spring java-stream
1个回答
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将它们聚合在一起

© www.soinside.com 2019 - 2024. All rights reserved.