如果可能在一個班輪中使用Java 8流彙總樹的節點,有可能嗎?使用Java 8 Streams彙總樹節點
這裏是一個節點類來解決,這是使用一個遞歸和總結節點,如以下代碼
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;
}
}
正常方式。
int getNodeSum(Node node)
{
int total = 0;
if(node.children.isEmpty())
return node.getNodeNum();
else
{
for(Node tempNode:node.children)
{
total+= getNodeSum(tempNode);
}
return total+node.getNodeNum();
}
}
我們可以使用流來概括眼前的子節點,但我沒有得到如何將深使用流做遞歸。 此代碼僅將問題解決到單個級別。有任何想法嗎?
total = list.stream().filter(Node -> node.children.isEmpty()).map(Node:: getNodeNum).reduce(node.getNodeNum(), (a,b) -> a+b);