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

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/qq_38292691/article/details/87906711