简体   繁体   English

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

[英]Switching the Sort filter Parameter in Java 8 Comparator's Sort method

How to change the sort parameter based on a null check in Java 8 stream.如何根据 Java 8 流中的空检查更改排序参数。

Example:例子:

myList = myList .stream().sorted(Comparator.comparing(Profile::getFirstName)).collect(Collectors.toList());

Here if getFirstName turns out NULL, I want to use another value getLastName.这里如果 getFirstName 结果为 NULL,我想使用另一个值 getLastName。

Like:喜欢:

if(Profile.getFirstName()==null)

Sort using Profile.getLastName()

else

Sort using Profile.getFirstName()
...sorted(Comparator.comparing(x -> x.getFirstName() == null ? x.getLastName() : x.getFirstName()))....

我这样做了:

 myList = myList.stream().sorted(Comparator.comparing(profile->profile.getFirstName()==null? profile.getLastName():profile.getFirstName())).collect(Collectors.toList()); 
    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;
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM