List复杂排序
list排序 指定值置顶/底
// 按时间倒序, 库存为0置底
List<ServiceAgg> list = pageList.stream()
.sorted(Comparator.comparing(ServiceAgg::getUpdateTime).thenComparing(ServiceAgg::getId).reversed())
.sorted(Comparator.comparing(ServiceAgg::getStockUsed, (o1, o2) -> NullSafeComparator.NULLS_HIGH.compare(o1 == 0 ? null : 1, o2 == 0 ? null : 1)))
.collect(Collectors.toList());
另一种思路
List<ServiceAgg> list = pageList.stream()
.sorted(Comparator.comparing(ServiceAgg::getUpdateTime).thenComparing(ServiceAgg::getId).reversed())
.sorted(Comparator.comparing(ServiceAgg::getStockUsed, Comparator.comparingInt(o -> (o == null || o == 0) ? 1 : 0)))
.collect(Collectors.toList());
多说一句
Integer o = null;
// org.apache.commons.lang3
// null和0 为 false ,其它为 true
BooleanUtils.toBooleanDefaultIfNull(BooleanUtils.toBooleanObject(o),false)
// hutool
// 特定值为 true ["true", "yes", "y", "t", "ok", "1", "on", "是", "对", "真" ]
BooleanUtil.toBoolean(o + "")