我要创建一个比较器,该比较器基于由我构建的方法(采用文件)创建的字符串在文件之间进行比较。
“ 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] 删除。
我来说两句