我有一个问题 - 我有件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] 删除。
我来说两句