Java中使用Comparator.comparing时如何先判空再比较关联对象属性
解决Comparator中空值排序的异常问题
原代码中由于category可能为null,调用ProjectCategoryVo::getName时会触发空指针异常。可以通过Comparator提供的nullsFirst或nullsLast方法处理空值场景:
- 若希望空category排在最前,使用
nullsFirst包裹内层比较器:
Comparator.comparing( ProjectVo::getCategory, Comparator.nullsFirst(Comparator.comparing(ProjectCategoryVo::getName)) )
- 若希望空category排在最后,使用
nullsLast包裹内层比较器:
Comparator.comparing( ProjectVo::getCategory, Comparator.nullsLast(Comparator.comparing(ProjectCategoryVo::getName)) )
这两个方法会优先处理空值:遇到category为null时直接按指定顺序排列,非空值才会执行ProjectCategoryVo::getName的比较逻辑,从根源避免空指针异常。
内容的提问来源于stack exchange,提问作者Shiv
相关产品推荐
相关产品推荐

