@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)