在java流中的Foreach

时间:2018-02-22 23:32:50

标签: java java-stream

我有一个方法:

  1. 包含CustomObjects列表,

  2. 获取变量参数

  3. 并且应该返回带有param对象ID的字符串列表

  4. CustomObject看起来像:

    {
        "id": "1a",
        "secondObjectList": [{
            "name": "a",
            "params": ["param1", "param2", "param3"]
        },
        {
            "name": "b",
            "params": ["param2"]
        }]
    }
    

    当对象只有一个参数时,流的方法有效:

    public List<String> findObjectsIdsThatHaveParam(List<CustomObject> objectsList, String param) {
        return objectsList.stream()
                .filter(object -> object.getSecondObjectList.get(0).getParams().contains(param))
                .map(CustomObject::getId)
                .collect(Collectors.toList());
    }
    

    我不知道如何通过params arrayList进行迭代。你知道我怎么用流吗?

1 个答案:

答案 0 :(得分:1)

我认为你对如何迭代所有元素感到困惑,直到满足所提供的标准。

流利用内部迭代,所以你可以 从getSecondObjectList创建一个流,并使用anyMatch提供您的标准。

.filter(object -> object.getSecondObjectList.stream()
               .anyMatch(e -> e.getParams().contains(param)))
...
...