```java
//获取数据,得到的数组中必须是一个实体对象,不能是map
List<ZZ500ETFVoucherData> list = zz500ETFVoucherMapper.getVoucherData(busiDate);
//根据sercuId分组,一个sercuId对应多个对象
Map<String, List<ZZ500ETFVoucherData>> groupByMap = etfList.stream().collect(Collectors.groupingBy(list -> list.getSecuId()));
//用来装最后分组之后的结果集
List<Map<String, String>> qtyList = new ArrayList<Map<String, String>>();
//循环上面得到的map对象,计算每一个key对应的value数组的统计值
groupByMap.forEach((k, kList) -> {
//得到一个DoubleSummaryStatistics对象,里面包含dcompQty字段的各种统计值;如果是int类型或者是long类型,需要修改对应的对象
DoubleSummaryStatistics qtySummary = kList.stream().collect(Collectors.summarizingDouble(e -> Double.valueOf(e.getDcompQty())));
Map<String, String> qtyMap = new HashMap<>();
qtyMap.put("SECUID", k);
qtyMap.put("MAXNUM", String.valueOf(qtySummary.getMax()));//根据sercuId分组后dcompQty的最大值
qtyMap.put("MINNUM", String.valueOf(qtySummary.getMin()));//根据sercuId分组后dcompQty的最小值
qtyMap.put("SUMNUM", String.valueOf(qtySummary.getSum()));//根据sercuId分组后dcompQty的和值
qtyMap.put("AVGNUM", String.valueOf(qtySummary.getAverage()));//根据sercuId分组后dcompQty的平均值
qtyMap.put("COUNTNUM", String.valueOf(qtySummary.getCount()));//根据sercuId分组后dcompQty的个
qtyList.add(qtyMap);
});
多个字段合并进行统计
List<UndueReverseRepoData> resultList = new ArrayList<UndueReverseRepoData>();
//多个字段共同分组,并对结果集进行分组求和
Map<String, List<UndueReverseRepoData>> resultMap = resultList.stream().collect(Collectors.groupingBy(undueReverseRepo ->
undueReverseRepo.getMarketCode() +"#"+ undueReverseRepo.getFundcode() +"#"+ undueReverseRepo.getFundname() +"#"+ undueReverseRepo.getSettlcurramt2()
));
List<UndueReverseRepoData> result = new ArrayList<>();
resultMap.forEach((k, kList) ->{
UndueReverseRepoData nmap = new UndueReverseRepoData();
DoubleSummaryStatistics sumcc = kList.stream().collect(Collectors.summarizingDouble(e->Double.valueOf(e.getAmt())));
nmap.setMarketCode(kList.get(0).getMarketCode());
nmap.setFundcode(kList.get(0).getFundcode());
nmap.setFundname(kList.get(0).getFundname());
nmap.setAmt(String.valueOf(sumcc.getSum()));
nmap.setSettlcurramt2(kList.get(0).getSettlcurramt2());
});