java - 如何将以下比较器翻译为Comparator.comparing?

标签 java arrays java-8 comparator

我的问题可能不清楚,所以让我通过示例来澄清:

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

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

Arrays.sort(arr, Comparator.comparing((a, b) -> (b + a).compareTo((String)a + b)));

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

最佳答案

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

Arrays.sort(arr, (a, b) -> (b + a).compareTo(a + b));

关于java - 如何将以下比较器翻译为Comparator.comparing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61043870/

相关文章:

java - DateTimeFormatterBuilder 与 YEAR 字段的指定 parseDefaulting 冲突

javascript - 在 Django 中将字符串转换为 Javascript 中的字典列表

mysql - MySQL 中 JSON 字段的总和

java - 有没有一种方法可以使用方法引用进行降序排序?

Java:如何构造或模式化一个类,以便我们可以在运行时映射组合对象?

java - jTDS - 运行 Maven 构建的项目时没有合适的驱动程序异常

java - 使用 findAll 子树意外结束

java - Java 中 isDirectory 和 isFile 的 File 始终返回 false

c - 在结构字段(列表)中填充 Char*

java - 更改两种类型参数边界的顺序会导致 Java 运行时错误