一、集合元素排序:
(1)集合条件排序(java8流):stream().sorted()
1
// 状态排序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-> { OrderListDTOorderListDTO=newOrderListDTO(); 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=newArrayList<Object>(); // Arrays.sortArrays.sort(list, newComparator<Integer>() { publicintcompare(Integers1, Integers2) { returns1-s2;// 排序说明,如果是S1-S2,就是升序排列。如果是S2-S1,就是降序排列。 } }); println(Arrays.toString(list)); // Collections.sortCollections.sort(list, newComparator<People>() { publicintcompare(Peopleo1, Peopleo2) { if (o1.age>o2.age) {// 按照年龄大小排序,年龄大则排在后边,返回正数return1; } else { return-1; } } }); // Collections.sort 简化写法:Collections.sort(list,(a,b)->(a.getId()-b.getId()));