java – Comparator.comparing与lambda的两个参数

我用非java 8方式编写了我的自定义比较器,如下所示,但即使在阅读了一些博客之后也不清楚,如何使用Comparator.comparing与lambda样式语法进行比较.

class MyCustomComparator  implements Comparator<Integer> {
    @Override
    public int compare(Integer n1, Integer n2) {
        String ns1 = Integer.toString(n1) + Integer.toString(n2);
        String ns2 = Integer.toString(n2) + Integer.toString(n1);
        if (Integer.parseInt(ns1) > Integer.parseInt(ns2)) {
            return 1;
        } else if (Integer.parseInt(ns1) < Integer.parseInt(ns2))
            return -1;
        return 0;
    }
}

通常Comparator.comparing采用lambda,其中大多数例子我说lamda没有参数.

解决方法:

Comparator.comparing允许您在比较它们之前指定要单独应用于每个对象的转换.由于Comparator需要两个参数才能应用其逻辑,因此不能将其写为Comparator.comparing表达式.

上一篇:Python排序具有“关键”功能不足


下一篇:java – 有一种简洁的方法来创建一个基于X.getY()排序的Comparator