栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jdk8 stream流分组,统计个数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jdk8 stream流分组,统计个数

前提 原始数据
字段1字段2字段3字段4
ABCD
ABCD
BBCD
BBCD
操作得到的数据

根据字段1分组之后得到数量。如:A的数量为2,B的数量也是2.返回前端数值。

字段1字段2字段3字段4
ABCD
BBCD
// 其中vResNeLists类似与原始数据

//方法一;
        // 根据网元类型id分组和统计行数
        Map> map = vResNeLists.stream()
                .collect(Collectors.groupingBy(VResNeList::getTypeId, Collectors.groupingBy(VResNeList::getTypeId, Collectors.counting())));
       // 存放新的集合里面存在总数量
        List newVResNeLists=new ArrayList();
        // 进行处理操作 添加到新的集合里面
        vResNeLists.stream().forEach(vResNeList->{
            NeReportVO neReportVO = new NeReportVO();
            map.forEach((k, v) -> {
                if (k == vResNeList.getTypeId()) {
                    neReportVO.setTotal(Math.toIntExact(v.get(k)));
                }
                neReportVO.setName(vResNeList.getName());
                neReportVO.setNeModel(vResNeList.getTypeName());
                neReportVO.setNeType(vResNeList.getTypeCategoryName());
            });
            newVResNeLists.add(neReportVO);
        });
        //按照网元类型id进行去重操作
        ArrayList collect = newVResNeLists.stream().collect(
                Collectors.collectingAndThen(Collectors.toCollection(() ->
                        new TreeSet<>(Comparator.comparing(NeReportVO::getNeModel))), ArrayList::new));
        return collect;

        //方法二;
        //按照网元类型去重
        List vResNeListList = vResNeLists.stream().collect(
                Collectors.collectingAndThen(Collectors.toCollection(() ->
                        new TreeSet<>(Comparator.comparing(VResNeList::getTypeId))), ArrayList::new));


        for (VResNeList vResNeList : vResNeListList) {

            //获取网元类型对应的网元集合数据
            List corpList = vResNeLists.stream().filter(item ->
                    item.getTypeId().equals(vResNeList.getTypeId())
            ).collect(Collectors.toList());

            //按照型号去重
            List typeLists = corpList.stream().collect(
                    Collectors.collectingAndThen(Collectors.toCollection(() ->
                            new TreeSet<>(Comparator.comparing(VResNeList::getTypeId))), ArrayList::new));

            for (VResNeList neList : typeLists) {

                //获取对应厂家对应型号的数据总集合
                List typeList = corpList.stream().filter(item ->
                        item.getTypeId().equals(neList.getTypeId())).collect(Collectors.toList());

                //网元返回对象
                NeReportVO neReportVO = new NeReportVO();
                neReportVO.setName(vResNeList.getName());
                neReportVO.setNeModel(neList.getTypeName());
                neReportVO.setNeType(neList.getTypeCategoryName());
                neReportVO.setTotal(typeList.size());

                neReportVOS.add(neReportVO);

            }

        }
        return neReportVOS;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010600.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号