【发布时间】:2019-11-21 21:42:17
【问题描述】:
我想使用内置的比较功能根据特定的方法对字符串进行排序,但是发生了错误。我应该使用什么比较器
VsCode openjdk 版本“1.8.0_191-1-redhat” OpenJDK 运行时环境 (build 1.8.0_191-1-redhat-b12) OpenJDK 64 位服务器 VM(内部版本 25.191-b12,混合模式)
public String[] reorderLogFiles(String[] logs){
Comparator<String> myComp = new Comparator<String>(){
//@Override
public int compare(String s1, String s2){
int s1si = s1.indexOf(' ');
int s2si = s2.indexOf(' ');
char s1fc = s1.charAt(s1si+1);
char s2fc = s2.charAt(s2si+1);
if(s1fc<='9'){
if(s2fc<='9')return 0;
else return 1;
}
if(s2fc<='9')return -1;
int isNeedChange = s1.substring(s1si+1).compareTo(s2.substring(s2si+1));
if(isNeedChange == 0)return s1.substring(0,s1si).compareTo(s2.substring(0,s2si));
return isNeedChange;
}
};
Arrays.sort(logs,myComp);
return logs;
}
比较器无法解析为类型
【问题讨论】:
-
如果没有注意@override,还有另一个错误消息:类型new Comparator
(){}的方法compare(String, String)必须覆盖或实现超类型方法跨度> -
你导入了吗?
-
什么信息?它没有压倒一切? compare 方法采用 Object 的两个实例,而不是 String 的实例。
-
我发现我忘记了 import java.util.Comparator;但是为什么 vscode 没有显示问题或自动导入?
-
什么是vscode?以及为什么要“自动”完成所有操作。那里可能有成千上万个称为 Comparator 的类,您是否希望您的代码自己选择使用哪一个?
标签: java