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();
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);
}
}