Java Stream<Object> 过滤然后使用结果

标签 java java-8 java-stream

我不明白如何使用过滤 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/

相关文章:

java - 使用 Java 8 重构多态性

oop - 两个默认方法互相调用

java - Stream API - 如果 filter() 紧随其后,sorted() 操作如何工作?

java - 为什么更新/更快的 Java 8 排序方式更糟糕?

java - 带有泛型的未知 Javadoc 标记 TYPE

java - 使用 ImageIcon 和 JLabel

java - 将 Google App Engine 升级到 Java 8 时出现无法识别的元素 '<runtime>'

Java 8 流 - 在平面图之后引用原始流对象

Java 游戏 - 未知错误

java - 创建了这个简单的代码来在android中绘制圆圈,但它在模拟器上没有显示任何内容