考虑一下,我有下面的课.
public class Employee {
private Integer id;
private Integer parentId;
private int value;
}
现在我有以下记录.
Employee employee1 = new Employee(1, null, 4);
Employee employee2 = new Employee(2, 1, 4);
Employee employee3 = new Employee(3, null, 8);
Employee employee4 = new Employee(4, 1, 3);
Employee employee5 = new Employee(5, 2, 11);
所以parentId
是employee中的id
,而employee是另一个employee的老板.
问题是找出employee的值的100和它的父级(如果有),或者按原样返回值.所以在这种情况下,结果应该是.
id | value |
---|---|
1 | 4 |
2 | 8 |
3 | 8 |
4 | 7 |
5 | 15 |
如何使用Java8流实现这一点?我试过以下方法:;
Optional<Integer> first = employees.stream().map(a -> {
int sum = 0;
employees.stream().map(b -> {
if (Objects.equals(a.id, b.parentId)) {
sum = sum + a.value + b.value;
}else{
sum = sum + a.value;
}
return sum;
});
return sum;
}
).findFirst();
但是我得到了sum变量的错误,它应该是final或者实际上是final.