我开始学习Stream API,但无法通过这个。
我正在实施图表,所以我有这样的课程:
图表 - >节点 - >边缘
图中的节点存储在Hashset中;边缘也是边缘。
此处的代码:
Graph g = new Graph("Graph 1");
g.addNode(new Node("A"));
g.addNode(new Node("B"));
g.connectNodes("A","B", true); //nodeA, nodeB, bidirectional
System.out.println(g);
g.getNodes().stream().map(Node::getConnections);
我不知道下一行是做什么的。 此时它返回边的HashSet。
我试过
g.getNodes().stream().map(Node::getConnections).map(x->x.getNodeB().getName()).forEach(System.out::println);
通过边缘节点名称获得第二个连接, 但是IDE不允许我做下一张地图。
你能提一些提示吗?
答案 0 :(得分:0)
使用flatMap作为Serghey建议就像魅力一样。
g.getNodes().stream().map(Node::getConnections).flatMap(x->x.stream()).map(x->x.getNodeB().getName()).forEach(System.out::println);