为了账号安全,请及时绑定邮箱和手机立即绑定

基于 Object 属性的 Java 8 流文件管理器

基于 Object 属性的 Java 8 流文件管理器

慕田峪9158850 2022-08-17 12:19:14
我正在尝试使用java 8中的流从映射中获取所有值的总和。以下是我拥有的集合:Map<BigDecimal, List<Object>> map = ...... //some elements in this map假设对象具有以下属性:BigDecimal previousAmount;int typeCode;我正在尝试获取所有键的列表中的每个对象的所有 previousAmount 的总和。以下是我想出的:BigDecimal previousAmt = map.values().stream().flatMap(List::stream)             .map(Object::previousAmount).reduce(BigDecimal.ZERO, (a, b) -> a.add(b));这给了我列表中所有元素的总和,并且所有键都正确。但是我尝试过滤并仅在类型代码大于10时才获取总和。任何人都可以建议如何使用typeCode过滤上述流吗?
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

你可以只使用 Stream.filter() 方法:

BigDecimal previousAmt = map.values().stream().flatMap(List::stream)
    .filter(i -> i.getTypeCode() > 10) // filters the stream
    .map(MyObject::getPreviousAmount)
    .reduce(BigDecimal.ZERO, BigDecimal::add);


查看完整回答
反对 回复 2022-08-17
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信