我不明白如何使用过滤 Stream<> 的结果。示例:
Stream<Edge> edgesStr = graph.edges().filter(edge -> edge.getNode1() == graph.getNode(ip2));
以上成功(?)过滤了边缘流,仅保留 getNode() 方法相等的那些边缘。 在此之后,我想使用这些结果,例如:
//for each result
Node node = edgeStr.getNode(); //method getNode() exists for objects Edge
foo1(Node);
foo2(Node);
注意:graph.edges() 返回 Stream<Edges>
.
最佳答案
您可以通过某些Collector
方法收集
结果,即收集到List
时的toList
.为了从 Edge
中提取 Node
,您可以使用 map
。
List<Node> edges = graph.edges()
.filter(edge -> edge.getNode1() == graph.getNode(ip2))
.map(edge -> edge.getNode())
.collect(Collectors.toList());
关于Java Stream<Object> 过滤然后使用结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59437844/