null排序用法

order by ti.opr_id asc NULLS FIRST


order by ti.opr_id desc NULLS FIRST
### Java Stream 排序时处理 Null 值 当使用 `Stream` 对象进行排序时,如果数据集中存在 `null` 值,则可能会抛出异常。为了安全地处理这些情况,在比较器中可以定义对于 `null` 的特殊逻辑。 下面是一个例子,展示了如何在对 `List<LovValueDTO>` 进行排序的同时妥善处理可能存在的 `null` 订单序列号: ```java import java.util.Comparator; import java.util.List; import java.util.Objects; import java.util.Optional; public class LovValueDTOSorter { public static void main(String[] args) { List<LovValueDTO> lov = ... ; // 初始化列表 Comparator<LovValueDTO> nullSafeOrderSeqComparator = Comparator.comparing( (LovValueDTO dto) -> Optional.ofNullable(dto.getOrderSeq()), Comparator.nullsLast(Integer::compareTo)); lov = lov.stream() .sorted(nullSafeOrderSeqComparator) .collect(Collectors.toList()); } } ``` 在这个实现里,引入了 `Optional<T>.ofNullable(T)` 方法来封装潜在为空的对象,并利用 `Comparator.nullsLast()` 来指定当遇到 `null` 时应将其放在最后的位置[^1]。 另外一种方式是直接在 `comparing` 中嵌入三元运算符来进行判断: ```java lov = lov.stream() .sorted(Comparator.comparing( LovValueDTO::getOrderSeq, (o1, o2) -> Objects.compare(o1 != null ? o1 : Integer.MAX_VALUE, o2 != null ? o2 : Integer.MAX_VALUE, Integer::compare))) .collect(Collectors.toList()); ``` 这里采用了 `Objects.compare` 和自定义的比较函数,使得任何 `null` 都会被视为具有最大整数值从而被放置于排序后的末端位置[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值