java使用stream做二维数据统计,把List转换为Map>


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

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM