zoukankan      html  css  js  c++  java
  • 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;
    }
    }
  • 相关阅读:
    spring(二) AOP之AspectJ框架的使用
    spring(一) IOC讲解
    struts2(六) 文件上传和下载
    导入Excel后绑定GridView实例
    类型“GridView”的控件必须放在具有 runat=server 的窗体标记内?
    只能在执行 Render() 的过程中调用 RegisterForEventValidation
    C# 连接SQL Server数据库的几种方式--server+data source等方式
    C#未将对象引用设置到对象的实例
    代码保存好
    在选定的数据源上未找到名为“TitleSub”的字段或属
  • 原文地址:https://www.cnblogs.com/lch1990/p/13367905.html
Copyright © 2011-2022 走看看