0
私はStream APIの学習を開始しましたが、このAPIを使用することはできません。私は、グラフを実装していますオブジェクトのセットからのストリーム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が返されます。
私は 、第2のエッジノード名を経由して接続して取得する
g.getNodes().stream().map(Node::getConnections).map(x->x.getNodeB().getName()).forEach(System.out::println);
を試みたが、IDEは私が次のマップを行うことはできません。
ヒントはありますか?
代わりに 'flatMap'を使用してください。 'flatMap(node - > node.getConnections()。stream())' –
サイドノート:あなたのAPIを再考したいかもしれません。 Nodeでノード名をラップするのはなぜですか?しかし、それらを接続するときはStringとして参照してください。 connectNodesはNode型を取ります。 – aglassman
ええ、始めに、Node(Node、Node)に接続しようとしましたが、HashSetのためにNodeを取得するのに本当に悪い時間がありました。これで、NodeオブジェクトのidをStringとして使用します。より良いアプローチがありますか? @SergheyBishyr、感謝の仲間、私はそれを試してみましょう。 – Jump3r