一、集合元素排序:
(1)集合条件排序(java8流):stream().sorted()
// 状态排序orderListDTOS.stream().sorted(Comparator.comparing(OrderListDTO::getOrderStatusStr)// 评价时间 为null靠前.thenComparing(OrderListDTO::getEvaluateTime, Comparator.nullsFirst(String::compareTo).reversed())// 下单时间 倒序.thenComparing(OrderListDTO::getOrderTime, Comparator.nullsFirst(String::compareTo)).reversed())// 赋值给新集合 进行保存.collect(Collectors.toList()).forEach(order -> {OrderListDTO orderListDTO = new OrderListDTO();BeanUtils.copyProperties(order, orderListDTO);orders.add(orderListDTO);});
参数解释:
Comparator:比较器。
Comparator.comparing(OrderListDTO::getOrderStatusStr):按OrderListDTO对象中的orderStatusStr字段正序排序。
.thenComparing(OrderListDTO::getEvaluateTime, Comparator.nullsFirst(String::compareTo)).reversed()
第二个排序条件:evaluateTime,为null时排序靠后;
Comparator.nullsFirst(String::compareTo).reversed():可以达到为null的靠前排序效果;
.reversed():倒序。
*另外资料参考:JAVA8之Comparator特殊排序以及ComparatorUtils介绍
(2)Arrays.sort、 Collections.sort排序(相对于Stream流较慢)
List<Object> list=new ArrayList<Object>();// Arrays.sortArrays.sort(list, new Comparator<Integer>() {@Overridepublic int compare(Integer s1, Integer s2) {return s1-s2;// 排序说明,如果是S1-S2,就是升序排列。如果是S2-S1,就是降序排列。}});println(Arrays.toString(list));// Collections.sortCollections.sort(list, new Comparator<People>() {@Overridepublic int compare(People o1, People o2) {if (o1.age > o2.age) {// 按照年龄大小排序,年龄大则排在后边,返回正数return 1;} else {return -1;}}});// Collections.sort 简化写法:Collections.sort(list,(a,b)->(a.getId()-b.getId()));
