可能であれば、Java 8ストリームを使用してツリーのノードを集計することは可能ですか?ここでJava 8ストリームを使用してツリーノードを集計
は、ノードクラスは、これは再帰を使用して解決し、以下のコードのように、ノードを総括する
public class Node
{
private int nodeNum;
ArrayList<Node> children = new ArrayList<>();
public Node(int num)
{
this.nodeNum = num;
}
public int getNodeNum()
{
return nodeNum;
}
public boolean addNode(Node node)
{
return children.add(node);
}
public ArrayList<Node> getNodes()
{
return this.children;
}
}
通常の方法です。
ストリームを使用して直接の子ノードを集計することはできますが、Streamsを使用して再帰的に移動する方法はわかりません。 このコードは、問題を1つのレベルに解決するだけです。何か案は?
total = list.stream().filter(Node -> node.children.isEmpty()).map(Node:: getNodeNum).reduce(node.getNodeNum(), (a,b) -> a+b);