如何通过使用 collections.sort 使用修剪和避免 NPE?

She*_*mar 5 java sorting lambda comparator java-8

有一个 Class Role,数据成员为 String roleName。我必须对Role. 在排序时,我还需要检查 NPE 和修剪roleName。所以我用

roleList.sort(Comparator.comparing(Role::getRoleName, 
    Comparator.nullsLast(Comparator.naturalOrder())));
Run Code Online (Sandbox Code Playgroud)

我可以抑制空指针异常,但不能使用trim.

roleList.sort( (x, y) -> x.getRole().trim().compareTo(y.getRole().trim()));
Run Code Online (Sandbox Code Playgroud)

使用这个我无法避免 NPE。

Zhe*_*lov 6

这个怎么样:

roleList.sort(Comparator.comparing(Role::getRoleName,
    Comparator.nullsLast(Comparator.comparing(String::trim))));
Run Code Online (Sandbox Code Playgroud)

  • @Naman,当不在一个函数中解决两个问题时,它会变得更加干净和简单。毕竟,这个“nullsLast”比较器已经在保护另一个比较器了。只需使用 `Comparator.comparing(Role::getRoleName, Comparator.nullsLast(Comparator.comparing( String::trim)))` (2认同)