基于对象属性的Java8流文件服务器

基于对象属性的Java8流文件服务器,java,collections,java-8,java-stream,Java,Collections,Java 8,Java Stream,我试图使用Java8中的streams从映射中获取所有值的总和。以下是我的收藏: Map<BigDecimal, List<Object>> map = ...... //some elements in this map 我正在尝试获取所有关键帧列表中每个对象的所有previousAmount的总和。以下是我的想法: BigDecimal previousAmt = map.values().stream().flatMap(List::stream)

我试图使用Java8中的streams从映射中获取所有值的总和。以下是我的收藏:

Map<BigDecimal, List<Object>> map = ...... //some elements in this map
我正在尝试获取所有关键帧列表中每个对象的所有previousAmount的总和。以下是我的想法:

BigDecimal previousAmt = map.values().stream().flatMap(List::stream)
            .map(Object::previousAmount).reduce(BigDecimal.ZERO, (a, b) -> a.add(b));
这给了我列表中所有元素和所有键的总和。但我试图过滤,只有当类型码大于10时,才能得到和

任何人可以建议如何使用typeCode过滤上述流吗?

您可以使用以下方法:


谢谢你的回复@萨缪尔菲利普。我有没有办法知道这个类型是否等于10?而不是>10?如果我尝试按照上面所说的那样做,我会得到一个错误:(错误是什么?当然你可以更改条件,只需替换它!我的不好。它工作很抱歉。只是语法错误和此链接:帮助了我。非常感谢您的回复。
BigDecimal previousAmt = map.values().stream().flatMap(List::stream)
            .map(Object::previousAmount).reduce(BigDecimal.ZERO, (a, b) -> a.add(b));
BigDecimal previousAmt = map.values().stream().flatMap(List::stream)
    .filter(i -> i.getTypeCode() > 10) // filters the stream
    .map(MyObject::getPreviousAmount)
    .reduce(BigDecimal.ZERO, BigDecimal::add);