如何将以下比较器转换为 Comparator.comparing?

Jav*_*per 2 java arrays comparator java-8

我的问题可能不清楚,所以让我举例说明一下:

Arrays.sort(arr, new Comparator<String>(){
    public int compare(String a, String b){
        return (b + a).compareTo(a + b);
    }
});
Run Code Online (Sandbox Code Playgroud)

我想使用 Comparator.comparing。我尝试了以下方法:

Arrays.sort(arr, Comparator.comparing((a, b) -> (b + a).compareTo((String)a + b)));
Run Code Online (Sandbox Code Playgroud)

我收到一个错误 - lamdba 表达式中的返回类型错误。如何解决这个问题?

per*_*ero 6

Comparator.comparing方法需要一个keyExtractor类型Function。你只需要一个 lambda 来实现Comparator<String>这里的接口:

Arrays.sort(arr, (a, b) -> (b + a).compareTo(a + b));
Run Code Online (Sandbox Code Playgroud)