正确终止java流

时间:2017-08-23 15:49:57

标签: java java-8 java-stream

neighboursOfCurrentVertexList = neighboursOfCurrentVertexList.stream()
            .filter(vertex -> !vertex.isMarked())
            .map(vertex -> {
                vertex.setMarked(true);
                queueToVisitVertex.add(vertex);
                return vertex;
            }).collect(Collectors.toList());

我已经使用java流实现了这个breadthFirstSearch算法。首先,我过滤以检查是否标记了顶点,然后如果没有标记,我将其添加到队列中。当我使用.map时,我需要以.collect(Collectors.toList())等终止操作结束。

我的问题是,这对我来说并不正确,因为我使用的是collect,它会返回一个过滤顶点的新列表。在这种情况下我应该使用什么终端操作?我没有必要收集新的清单。我只是想使用全部的map操作。谢谢

1 个答案:

答案 0 :(得分:4)

使用.forEach代替.map

neighboursOfCurrentVertexList.stream()
        .filter(vertex -> !vertex.isMarked())
        .forEach(vertex -> {
            vertex.setMarked(true);
            queueToVisitVertex.add(vertex);
        });