按照型号分组,分组后统计数量

//按照型号进行分组
        List<VResNeList> vResNeListList = vResNeLists.stream().collect(
                Collectors.collectingAndThen(Collectors.toCollection(() ->
                        new TreeSet<>(Comparator.comparing(VResNeList::getTypeId))), ArrayList::new));
        //分组后获取在线和离线
        for (VResNeList vResNeList : vResNeListList) {
            // 获取相同型号下的在线离线数量
            List<VResNeList> down = vResNeLists.stream()
                    .filter(item -> (item.getTypeId().equals(vResNeList.getTypeId()) && (item.getState() == (0))))
                    .collect(Collectors.toList());
            List<VResNeList> up = vResNeLists.stream()
                    .filter(item -> (item.getTypeId().equals(vResNeList.getTypeId()) && (item.getState() == (1))))
                    .collect(Collectors.toList());
            System.out.println(down.size()+"离线" + up.size()+ "在线");
            int total = (up.size()+ down.size());
            if (total > 0){
                // 创建一个数值格式化对象
                NumberFormat numberFormat = NumberFormat.getInstance();
                // 设置精确到小数点后2位
                numberFormat.setMaximumFractionDigits(2);
                String result = numberFormat.format((float)up.size()/ (float)total * 100);
                //在线离线状态返回对象
                NeReportStateVO neReportStateVO = new NeReportStateVO();
                neReportStateVO.setName(vResNeList.getTypeName());
                neReportStateVO.setOnlineTotal(up.size());
                neReportStateVO.setOfflineTotal(down.size());
                neReportStateVO.setOnlineRate(Double.valueOf(result));
                neReportStateVO.setTotal(total);
                neReportVOS.add(neReportStateVO);
            }else {
                //在线离线状态返回对象
                NeReportStateVO neReportStateVO = new NeReportStateVO();
                neReportVOS.add(neReportStateVO);
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值