如果可能在一个班轮中使用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);