Java 如何循环嵌套对象,并使用lambda和streams验证某些计算

Java 如何循环嵌套对象,并使用lambda和streams验证某些计算,java,oop,lambda,java-stream,Java,Oop,Lambda,Java Stream,我需要通过嵌套对象循环验证一些计算。例: Category obj1 = new Category(0, 0, 10, null); Category obj2 = new Category(2, 3, 6, obj1); Category obj3 = new Category(2, 2, 4, obj1); 我需要检查父母是否存在以下情况: sum2(数量*价格=总计) sum3(数量*价格=总计)和sum2+sum3=父项总计 例: (2*2==4) (3*3==6)和4+6==10

我需要通过嵌套对象循环验证一些计算。例:

Category obj1 = new Category(0, 0, 10, null);
Category obj2 = new Category(2, 3, 6, obj1);
Category obj3 = new Category(2, 2, 4, obj1);
我需要检查父母是否存在以下情况: sum2(数量*价格=总计) sum3(数量*价格=总计)和sum2+sum3=父项总计

例: (2*2==4) (3*3==6)和4+6==10

我怎样才能用lambda和streams做到这一点

public class Category {

    private int qty;
    private int price;

    private int total;

    private Category rootCategory;

}

使用
Stream.of
创建
Category
流,然后
filter
对象
rootCategory
不为空

int sum = Stream.of(obj1, obj2, obj3)
        .filter(o -> Objects.nonNull(o.getRootCategory()))
        .mapToInt(c -> c.getQty() * c.getPrice())
        .sum();

请至少使用传统循环提供代码。可能有
布尔validateTotal(类别父级,设置子级){return parent.getTotal()==childs.stream().mapToLong(child->child.getPrice()*child.getQty()).sum();}
。为了利用它,你可以想办法通过父母和他们的孩子来验证他们的总数。假设有许多类别有相同的根,10,20,我认为它应该循环到所有有相同根的类别。你说的相同根是什么意思?什么是
10
20
@具有相同根的黑樱桃属