Java 我会听到一个错误,说“我;“字符串”类型的比较方法(字符串,字符串)未定义;为什么可以';我不能对2D数组排序吗?

Java 我会听到一个错误,说“我;“字符串”类型的比较方法(字符串,字符串)未定义;为什么可以';我不能对2D数组排序吗?,java,string,sorting,comparator,Java,String,Sorting,Comparator,我正在开发一个危险GUI游戏,在这个游戏中,我对我的2d问题进行排序。我在返回的.compare行上得到一个错误。错误表示“类型字符串的方法比较(字符串,字符串)未定义” JButton btnSort=新JButton(“排序”); addActionListener(新的ActionListener(){ 已执行的公共无效操作(操作事件e){ String[][]问题=新字符串[][]{{“有多少大陆?”},{“加拿大的首都是什么?”},{“世界上最大的国家是什么?”},{“世界上最大的海洋

我正在开发一个危险GUI游戏,在这个游戏中,我对我的2d问题进行排序。我在返回的.compare行上得到一个错误。错误表示“类型字符串的方法比较(字符串,字符串)未定义”

JButton btnSort=新JButton(“排序”);
addActionListener(新的ActionListener(){
已执行的公共无效操作(操作事件e){
String[][]问题=新字符串[][]{{“有多少大陆?”},{“加拿大的首都是什么?”},{“世界上最大的国家是什么?”},{“世界上最大的海洋是什么?”},{“世界上有多少海洋?”},{“非洲有多少国家?”}{“世界上有多少国家以联合国这个词开头?”}、{“米兰在哪里?”}、{“美国人口最少的州是哪个州?”}、{“澳大利亚的首都是什么?”}、{“有多少国家以字母J开头?”}、{“世界上哪个国家的湖泊最多?”};
sort(问题,新的java.util.Comparator(){
公共整数比较(字符串[]a,字符串[]b){
返回字符串。比较(a[0],b[0]);
}
});
}
});
因为is不是一种采用两个参数的
静态
方法(未命名为compare)。它是一种实例方法,可以将一个
字符串
实例与另一个实例进行比较;例如

java.util.Arrays.sort(questions, new java.util.Comparator<String[]>() {
    public int compare(String[] a, String[] b) {
        return a[0].compareTo(b[0]);
    }
});
java.util.Arrays.sort(问题,新java.util.Comparator(){
公共整数比较(字符串[]a,字符串[]b){
返回a[0]。比较(b[0]);
}
});

这是因为您正在使用compare方法作为静态方法。请像其他任何实例方法一样使用它。您甚至可以使用compareTo()。

为什么您认为
String
有一个
compare
方法?文档,即的javadoc没有显示这样的方法。使用
返回a[0]。compareTo(b[0]);
和的相关性让我不知所措。
String.compare()
不存在,无论是作为静态方法还是作为实例方法。我不是说将它用作String类的compare()方法,因为它不存在。我要说的是使用compare()作为comparator类的实例方法。此外,我们还可以使用compareTo()作为comparator类的实例方法。
java.util.Arrays.sort(questions, new java.util.Comparator<String[]>() {
    public int compare(String[] a, String[] b) {
        return a[0].compareTo(b[0]);
    }
});