java8 stream 如果分组求和 bigdecimal类型的值?

牧之~ 2019-03-29 07:34:59

public class StreamTest2 {

public static void main(String[] args) {


Record o1 = new Record("hg", "沙县小吃", new BigDecimal(12));

Record o2 = new Record("hg", "沙县小吃", null);

Record o3 = new Record("hg", "沙县小吃", new BigDecimal(1));

Record o4 = new Record("hg", "沙县小吃", new BigDecimal(5));

List<Record> orders = Lists.newArrayList();

orders.add(o1);
orders.add(o2);
orders.add(o3);
orders.add(o4);

Map<String, BigDecimal> collect2 = orders.stream()
.collect(groupingBy(Record::getGoodsCode, reducing(new BigDecimal("0"), (a, b) -> , (ele1, ele2) -> ele1.add(ele2))));

System.out.println(collect2);

}

}



新api接口学的痛苦,主要是reduce太灵活了,掌握不住,就是相对一个字段分组求和, 但是求和时判断null.
...全文
4134 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧之~ 2019-04-01
  • 打赏
  • 举报
回复 1
引用 1 楼 济南大飞哥 的回复:
null转成 0 去合计.
用filter和map都能搞定, 我一开始没想到, 因为reduce其实是可以写很复杂的逻辑,一开始我是想着在reduce里写.结果没搞定.
牧之~ 2019-03-29
  • 打赏
  • 举报
回复
不想使用filter过滤,想在累加时做判断.
牧之~ 2019-03-29
  • 打赏
  • 举报
回复
null转成 0 去合计.

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧