zoukankan      html  css  js  c++  java
  • java使用stream做二维数据统计,把List<Map>转换为Map<String,Map<String,Integer>>

    1.首先通过数据库等方式获取要统计二维的数据,示例如下:
    date (一维)
    area(二维)
    count
    2018/11/11 EN 1
    2018/11/11 US 5
    2018/11/12 EN 3
    2018/11/12 US 2
    2018/11/12 US 2


    2.数量统计
     
    //主要用到了Collectors.groupingBy方法进行分组,方法最后一个参数可以对分组后的数据继续操作,这样通过嵌套的方式就可以生成多维统计数据
    //使用了LinkedHashMap保证数据有序
    Map<String,Map<String,Integer>> result = list.stream().
                              collect(Collectors.groupingBy(e->e.get("date"),LinkedHashMap::new,
                                  Collectors.groupingBy(e->e.get("area"),LinkedHashMap::new,
                                     Collectors.summingInt(e->Integer.parseInt(e.get("count"))))));

     3.执行后的结果为:

                 <String,<String,Integer>>

        2018/11/11,EN,1

               US,5

        2018/11/12,EN,3

                US,4

     

     

     

  • 相关阅读:
    Mac使用Homebrew进行软件包管理
    RNN模拟二进制加法
    虚拟机安装ubuntu18.04
    github合并分支到master
    Python配置虚拟环境
    Python的进程、线程、协程
    原码,反码,补码
    MySQL中的截位函数:RIGHT与LEFT
    MySQL查询和删除重复记录
    Mysql中的数据类型
  • 原文地址:https://www.cnblogs.com/uip001/p/14823377.html
Copyright © 2011-2022 走看看