根据List集合中元素的多个属性,统计求和

根据List>中的多个属性,统计求和

    public static void main(String[] args) {

        List> data = new ArrayList<>();
        HashMap m1 = new HashMap<>();
        HashMap m2 = new HashMap<>();
        HashMap 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 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

你可能感兴趣的:(JAVA8)