版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38292691/article/details/87906711
根据List<Map<String, Object>>中的多个属性,统计求和
public static void main(String[] args) {
List<Map<String, Object>> data = new ArrayList<>();
HashMap<String, Object> m1 = new HashMap<>();
HashMap<String, Object> m2 = new HashMap<>();
HashMap<String, Object> m3 = new HashMap<>();
m1.put("devCode", "A");
m1.put("protocolCode", 123);
m1.put("sum", 23);
m2.put("devCode", "A");
m2.put("protocolCode", 123);
m2.put("sum", 23);
m3.put("devCode", "B");
m3.put("protocolCode", 123);
m3.put("sum", 23);
data.add(m1);
data.add(m2);
data.add(m3);
Map<String, Integer> collect = data.stream().collect(Collectors.groupingBy(m -> {
StringBuilder d_p = new StringBuilder();
d_p.append(MapUtils.getString(m, "devCode"));
d_p.append("_");
d_p.append(MapUtils.getString(m, "protocolCode"));
return d_p.toString();
}, Collectors.summingInt(s -> MapUtils.getInteger(s, "sum"))));
System.out.println(JSON.toJSONString(collect));
}
运行结果:
{"B_123":23,"A_123":46}
Process finished with exit code 0