Java 流<Object>过滤器,然后使用结果



我不明白如何使用过滤流的结果<>。例:

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方法collect结果,即toList收集成List时。为了从Edge中提取Node,您可以使用map.

List<Node> edges = graph.edges()
.filter(edge -> edge.getNode1() == graph.getNode(ip2))
.map(edge -> edge.getNode())
.collect(Collectors.toList());

如果需要对Node元素执行foo1foo2的空操作,则可以按如下方式执行:

graph.edges()
.filter(edge -> edge.getNode() == graph.getNode(ip2))
.map(edge -> edge.getNode()) // map edge to corresponding Node
.forEach(node -> { foo1(node); foo2(node);}); // calls foo1 and foo2 on each node

相关内容

最新更新