如何在Java 8流中基于空检查来更改排序参数。
示例:
myList = myList .stream().sorted(Comparator.comparing(Profile::getFirstName)).collect(Collectors.toList());
如果getFirstName结果为NULL,我想使用另一个值getLastName。
赞:
if(Profile.getFirstName()==null)
Sort using Profile.getLastName()
else
Sort using Profile.getFirstName()
答案 0 :(得分:3)
...sorted(Comparator.comparing(x -> x.getFirstName() == null ? x.getLastName() : x.getFirstName()))....
答案 1 :(得分:1)
我这样做了:
myList = myList.stream().sorted(Comparator.comparing(profile->profile.getFirstName()==null? profile.getLastName():profile.getFirstName())).collect(Collectors.toList());
答案 2 :(得分:1)
myList.stream().sorted((a, b) -> {
if(a.getFirstName() != null && b.getFirstName() != null) {
return a.getFirstName().compareTo(b.getFirstName());
}
if (a.getLastName() != null && b.getLastName() != null) {
return a.getLastName().compareTo(b.getLastName());
}
return 0;
});