list分组统计

package com.example.demo.controller;

import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

import java.util.*;
import java.util.stream.Collectors;

/**
* @author yhyi 2020/7/23 16:04
* @ClassName TestDemo.java
* @Description
* @version V1.0
* @modificationHistory=========================逻辑或功能性重大变更记录
* @modify by user: {修改人} 2020/7/23
* @modify by reason:{方法名}:{原因}
*/
public class TestDemo {

public static void main(String[] args) {
List<Test> list = Lists.newArrayList();
Test map = new Test("研发部","x");
Test map2 = new Test("研发部","y");
Test map3 = new Test("研发部","z");
Test map4 = new Test("测试部","x");
Test map5 = new Test("测试部","y");
Test map6 = new Test("测试部","z");
Test map7 = new Test("测试部","q");
list.add(map);
list.add(map);
list.add(map);
list.add(map2);
list.add(map2);
list.add(map3);
list.add(map4);
list.add(map5);
list.add(map5);
list.add(map6);
list.add(map7);
Map<String, List<Test>> collect = list.stream().collect(Collectors.groupingBy(e -> e.getDept()));
List<Object> setList = Lists.newArrayList();
collect.forEach((mapKey, getValue) -> {
Map<Object, Object> setMap = Maps.newHashMap();
//key:原因 value:数量
Map<String, Long> longMap = getValue.stream().collect(Collectors.groupingBy(Test::getReson, Collectors.counting()));
//key:原因 value:数量 排序后的
Map<String, Long> setMap1 = longMap.entrySet().stream().sorted(Map.Entry.<String, Long>comparingByValue().reversed()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b, LinkedHashMap::new));
//key:部门 value:原因+条数
setMap.put(mapKey, setMap1);
setList.add(setMap);
});
System.out.println("JSON.toJSONString(setList) = " + JSON.toJSONString(setList));

}

}
class Test{
private String dept;//部门
private String reson;//原因

public String getDept() {
return dept;
}

public void setDept(String dept) {
this.dept = dept;
}

public String getReson() {
return reson;
}

public void setReson(String reson) {
this.reson = reson;
}

public Test(String dept, String reson) {
this.dept = dept;
this.reson = reson;
}
}
posted @ 2020-07-23 18:20  Zz~  阅读(2202)  评论(0编辑  收藏  举报