排序的三种方法:
list排序,sort为目标排序字段,order为正序或倒序
list.sort((o1,o2) -> {
Double a = Double.parseDouble(o1.get(sort).toString());
Double b = Double.parseDouble(o2.get(sort).toString());
if ("DESC".equalsIgnoreCase(order)) {
return b.compareTo(a);
}else {
return a.compareTo(b);
}
});
第二种:map依据某字段排序,默认正序,逐渐变大
Comparator<Map<String, Object>> bySortAsc = Comparator.comparing(x -> {
if (x.get(sort) != null && NumberUtils.isNumber(x.get(sort).toString())) {
return Double.parseDouble(x.get(sort).toString());
}
return 0.0;
});
if (AllStaticInfo.SortType.DESC.equalsIgnoreCase(order)) {
bySortAsc = bySortAsc.reversed();
}
resultData.sort(bySortAsc);
第三种:List用stream流排序
List<StatisticsNodeOrderVo> statisticsOrder = new ArrayList<>();
List<StatisticsNodeOrderVo> orderList orderList = statisticsOrder.stream().sorted(Comparator.comparing(StatisticsNodeOrderVo::getValueStr, Comparator.comparingDouble(Double::parseDouble))).collect(Collectors.toList());
List<StatisticsNodeOrderVo> orderList orderList = statisticsOrder.stream().sorted(Comparator.comparing(StatisticsNodeOrderVo::getValueStr, Comparator.comparingDouble(Double::parseDouble).reversed())).collect(Collectors.toList());