在Java 8 Comparator的Sort方法中切换Sort过滤器参数

时间:2019-08-05 09:12:37

标签: java java-8

如何在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()

3 个答案:

答案 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;
    });