基于对象属性的Java8流文件服务器
我试图使用Java8中的streams从映射中获取所有值的总和。以下是我的收藏:基于对象属性的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)
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);