对象集合分组然后求和
Posted znj-wu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象集合分组然后求和相关的知识,希望对你有一定的参考价值。
对象集合分组然后求和
public static void main(String[] args) {
List<ProductInformation> productInformationList = Lists.newArrayList();
ProductInformation p1 = new ProductInformation();
p1.setPartNum("123456");
p1.setRecommendHomeOrder(11);
ProductInformation p2 = new ProductInformation();
p2.setPartNum("123456");
p2.setRecommendHomeOrder(12);
ProductInformation p3 = new ProductInformation();
p3.setPartNum("123457");
p3.setRecommendHomeOrder(13);
productInformationList.add(p1);
productInformationList.add(p2);
productInformationList.add(p3);
// 取出partNum 等于 123456 的数据
List<ProductInformation> collect = productInformationList.stream().filter(p -> p.getPartNum().equals("123456")).collect(Collectors.toList());
for (ProductInformation productInformation: collect) {
System.out.println("partNum 等于 123456 的数据->"+productInformation.getPartNum());
}
//根据 partNum 去重,
List<ProductInformation> collect1 = productInformationList.stream().filter(distinctByKey(p -> p.getPartNum())).collect(Collectors.toList());
for (ProductInformation productInformation: collect1) {
System.out.println("去重后的数据->"+productInformation.getPartNum());
}
//求和
//Integer sum = productInformationList.stream().mapToInt(ProductInformation::getRecommendHomeOrder).sum();
//System.out.println("求和->"+sum);
//根据 partNum 分类 再求和
//第一步根据 partNum 分类
Map<String, List<ProductInformation>> mapGroups = ListUtils.groupBy(productInformationList, new ListUtils.GroupBy<String, ProductInformation>() {
@Override
public String groupBy(ProductInformation row) {
String partNum = row.getPartNum();
return partNum;
}
});
//第二步 根据分类的数据求和
// 要先遍历 这个分组数据 mapGroups
Iterator<Map.Entry<String, List<ProductInformation>>> iterator = mapGroups.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry<String, List<ProductInformation>> next = iterator.next();
String key = next.getKey();
//求和
List<ProductInformation> productInformations = next.getValue();
Integer sum = productInformations.stream().mapToInt(ProductInformation::getRecommendHomeOrder).sum();
System.out.println("分组物料:"+key+"的和为->"+sum);
}
}
ListUtils类
在这 https://www.cnblogs.com/znjbbq/p/14506695.html
ProductInformation 这个类无非是一个对象 然后两个属性而已 这边就不贴上具体代码了。
以上是关于对象集合分组然后求和的主要内容,如果未能解决你的问题,请参考以下文章
利用stream对list集合中的bigdecimal进行分组求和,均值,最大值,最小值