Java的8流 - 如何合并从具有相同的字段列表中的元素,以一个元素和总结

Natley:

我有一个问题 - 我有件A名单:

class A {
String fieldA;
int fieldB
}

我想与THR相同FIELDA所有元素合并到一个元素与fieldB这种方式总结了所有的值:

el1 = AAA 5
el2 = AAA 7
el3 = AAA 2

结果:

one element: AAA 14

我怎样才能做到这一点使用Java 8流?

那么,到底我的名单必须有比年初减少的元素。我必须找到具有相同FIELDA所有元素,并将其与总结fieldB合并到一个元素。

谢谢!

光明战士:

哟可以做一些这样的事只要你的类是可变的。

List<A> out = list.stream()
    .collect(Collectors
        .collectingAndThen(
            Collectors.toMap(ele -> ele.getFieldA(), Function.identity(), (a, b) -> {
              a.setFieldB(a.getFieldB() + b.getFieldB());
              return a;
            }), m -> new ArrayList<>(m.values())));

在此,首先将创建地图类型

Map<fieldA, A> 

具有(对象)fieldB值作为对应FIELDA值的所有fieldB值之和,然后简单地转换地图的值设定为表。

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章