集合操作

一、集合元素排序:

(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 -> {
            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.sort
Arrays.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer s1, Integer s2) {
                return s1-s2;// 排序说明,如果是S1-S2,就是升序排列。如果是S2-S1,就是降序排列。
            }
        });
println(Arrays.toString(list));
// Collections.sort
Collections.sort(list, new Comparator<People>() {
            @Override
            public 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()));
上一篇:HTML特殊标签


下一篇:jquery 事件触发二