jDu*_*ub9 3 java sorting java-8
我试图按照比较器给出的列表进行排序.我通过NullsLast方法传递比较器,以获得比较像JavaDoc状态的Null-Friendly版本的比较器.但是,当我运行代码时,当我将String比较器传递给方法时,我仍然会得到一个Null Pointer Exception.
private <T> void sortWithDirection(List<T> details, boolean isAscending, Comparator<T> comparator){
if(isAscending){
details.sort(Comparator.nullsLast(comparator));
} else {
details.sort(Comparator.nullsLast(comparator.reversed()));
}
}
List<UserDTO> users = new ArrayList<>();
sortWithDirection(users, false, Comparator.comparing(UserDTO::getName));
Run Code Online (Sandbox Code Playgroud)
我使用这种方法错了吗?是否有不同的方法可以阻止NPE而不将其从结果集中删除?
nullsLast将处理的情况下UserDTO是null.它不会让你无法getName返回null.要处理空名称,您需要在nullsLast之前应用comparing:
details.sort(comparing(
UserDTO::getName,
nullsLast(naturalOrder())
));
Run Code Online (Sandbox Code Playgroud)
或者,对于相反的顺序:
details.sort(comparing(
UserDTO::getName,
nullsLast(reverseOrder())
));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1363 次 |
| 最近记录: |