java list中某值汇总_Java中list集合根据字段汇总金额

既然题主提到说要用lambda表达式,而lambda本质来说就是一种写法,用stream的内部循环和传统的外部循环来比较,那就是写法不一样,写法不一样那就更应该明确当前需要的输入和输出了,输入是给清楚了,但是输出呢?题主只是说要返回一个新的List集合,这个List里装的啥?不同的东西最终可能导致写法的不太一致,没准思考方式也不太一样哈

我暂且以最终还是返回List为例,做个参考。

如果你想直接看最后的答案,可以直接拖到最后,下面只是我的一个思考过程而已

因为这里需要处理的主要问题就是相同的id和currency上的amount相加,那归根到底就是相同的id和currency的Foo对象要放在一起处理,这就是归类,归类在stream的api当然就要用Collectors.groupBy方法了

Collectors.groupBy有三个重载方法

groupingBy(Function classifier)

groupingBy(Function classifier, Collector downstream)

groupingBy(Function classifier, Supplier mapFactory, Collector downstream)

我把泛型去掉方便好看,其实参数也就是三种

classifier:根据什么方式去做分类,这是一个Function

mapFactory:最终分类的数据以什么类型map存放,因为分类嘛,就是相同类型的对象在一起,所以最终肯定是一个map结构

downstream:同一类的对象应该什么方式去做收集或者叫聚合

你可能感兴趣的:(java,list中某值汇总)