如何根據 Java 8 流中的空檢查更改排序參數。例子:myList = myList .stream().sorted(Comparator.comparing(Profile::getFirstName)).collect(Collectors.toList());如果 getFirstName 結果為 NULL,我想使用另一個值 getLastName。喜歡:if(Profile.getFirstName()==null)Sort using Profile.getLastName()elseSort using Profile.getFirstName()
3 回答

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
...sorted(Comparator.comparing(x -> x.getFirstName() == null ? x.getLastName() : x.getFirstName()))....

繁花不似錦
TA貢獻1851條經驗 獲得超4個贊
我這樣做了:
myList = myList.stream().sorted(Comparator.comparing(profile->profile.getFirstName()==null? profile.getLastName():profile.getFirstName())).collect(Collectors.toList());

慕少森
TA貢獻2019條經驗 獲得超9個贊
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;
});
添加回答
舉報
0/150
提交
取消