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操作。谢谢
答案 0 :(得分:4)
使用.forEach
代替.map
:
neighboursOfCurrentVertexList.stream()
.filter(vertex -> !vertex.isMarked())
.forEach(vertex -> {
vertex.setMarked(true);
queueToVisitVertex.add(vertex);
});