Java根据属性排序时的null值处理
@Data public static class ProjectFileType { private String value; private String name; private Integer order; }
针对ProjectFileType这个类,在返回给前端时需要通过order进行排序处理
考虑到order字段可能为空,使用了nullsLast处理
List<ProjectFileType> list; list.sort(Comparator.nullsLast(Comparator.comparing(ProjectFileType::getOrder)));
当order为空时,依旧会出现空指针错误
此时意识到外层的nullsLast是针对整个对象的控制,避免判断过程中出现空指针,应对内侧order进行处理
list.sort(Comparator.nullsLast(Comparator.comparing(ProjectFileType::getOrder,Comparator.nullsLast(Comparator.comparing(e->e)))));
此时可正确输出我们期望的结果
如果多个字段都需要进行这种空值处理的话,代码会显得很臃肿
此时可以采用Apache的commons-collections对要排序的字段做处理
引入相关依赖
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.4</version> </dependency>
创建NullComparator对象并使用
private static final NullComparator<Integer> nullComparator = new NullComparator<>(); list.sort(Comparator.nullsLast(Comparator.comparing(ProjectFileType::getOrder,nullComparator)));
NullComparator默认将null值排在最后,如果希望将null值数据拍在前面,可在创建时传入相关参数new NullComparator<>(true)
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
Spring 参数中包含空格