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