比较是基于我自己的方法的结果时,如何使用Comparator.comparing()定义新的Comparator?

karenYo:

我要创建一个比较器,该比较器基于由我构建的方法(采用文件)创建的字符串在文件之间进行比较。

“ getType”是我自己的函数(对于File以外的文件,我不能使用其他类)。我已经试过了:

private static Comparator<File> typeComparator = (File file1, File file2)-> getType(file1.getName()).compareTo(getType(file2.getName()));

但是IntelliJ不会接受,它说应该用Comparator.comparing替换它。我不知道如何执行此操作,因为据我了解,在Comparator.comparing中,我只能使用File的属性,而不能使用我自己的函数。

  private static String getType(String fileName) {
        int i = fileName.lastIndexOf('.');
        if (i > 0) {
            return fileName.substring(i+1);
        }
        return "";
    }

如果可能的话,我想使用Comparator.comparing来实现比较,或者使用比我更好的方法。

应得的:

你可以做:

Comparator.comparing((file) -> getType(file.getName()))

另外,您可以更改getType()方法来接受文件,因此您可以编写

Comparator.comparing(this::getType)

(是的,如果您按alt + enter询​​问,IntelliJ通常能够自动重写代码)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java的Comparator.comparing不是比较?

如何使用Comparator.comparing()比较字符串作为双?

Comparator.comparing()逆转()全部逆转早期比较?

嵌套场的Comparator.comparing(...)

Comparator.comparing(...)在采用String :: compareTo时引发非静态引用异常

如何获取Comparator.comparing以正确推断类型参数?

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

如何为Comparator.comparing使用通用的Number

带有键提取器的Optional <T>的比较器,例如java.util.Comparator.comparing

使用Comparator.comparing(HashMap :: get)作为比较器时发生意外行为

为什么Comparator.comparing无法与String :: toLowerCase方法参考一起使用?

Java Comparator.comparing方法中泛型的语义

Comparator.comparing中的多次检查

如何在Comparator中处理null比较方法参数?

Java 8中List的Comparator.comparing中的链方法

如何根据给定条件使用Comparator.comparing()对类进行排序

哪个更快?使用自定义的Comparator类或lambda函数

Java 8:在基于给定键比较地图中的值时使用Comparator.comparing

Java Comparator.comparing()类型签名是什么意思?

Comparator.comparing(...)。thenComparing(...)找出哪些字段不匹配

如何转换Comparator进行比较?

方法参考适用于Comparator.comparing方法,而lambda表达式不起作用

我想比较某些东西时是否可以使用Comparator取决于它的属性

mapreduce中的默认排序是否使用WritableComparable类或comapreTo()方法中定义的Comparator?

JavaFx-TableView:如何使用自定义Comparator <T>进行排序?

在Comparator.comparing中按位排列并且在Comparator和Serializable之间

Java 8 中 Map.Entry 的 Comparator.comparing

在 Comparator 比较方法中调用方法

与在 Comparator.comparing() 中使用方法引用混淆