gpt4 book ai didi

java - 在java中使用lambda获取列表中的值总和

转载 作者:行者123 更新时间:2023-11-30 10:49:43 24 4
gpt4 key购买 nike

我有一个包含 Node 对象的列表

class Node {
int id;
int value;
Integer parentId;

Node(int id, int value) {
this.id = id;
this.value = value;
this.parentId = null;
}

Node(int id, int value, int parentId) {
this.id = id;
this.value = value;
this.parentId = parentId;
}
}

List<Node> nodes = new ArrayList<>();
nodes.add(new Node(1, 10));
nodes.add(new Node(2, 3, 1));
nodes.add(new Node(3, 2, 2));
nodes.add(new Node(4, 1));
nodes.add(new Node(5, 2, 4));

我想通过使用 Java Lambda 函数遍历到末尾来获取具有给定 parentId 的值的总和。

enter image description here

例如对于上面的值,

如果 parentId = 1,结果为 15,因为节点 1 的子节点是节点 2 和节点 3

如果 parentId = 2,结果为 5,因为节点 2 的子节点只有节点 3

我应该使用哪个 lambda 函数来遍历列表并获取值的总和?

最佳答案

您可以在递归方法中使用 lambda 表达式。像这样(未经测试):

public int getTotal(List<Node> nodes, int parentId){
int total= 0;
nodes.forEach( n -> {
if(n.parentId == parentId)
total += getTotal(nodes, n.Id);
if(n.Id == parentId)
total += n.value;
});
return total;
}

看起来 java 不喜欢我的非最终变量“total”。对此的修复:ideone.com/BFVmmC

关于java - 在java中使用lambda获取列表中的值总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35317026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com