Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按字母顺序排序二维数组_Java - Fatal编程技术网

Java 按字母顺序排序二维数组

Java 按字母顺序排序二维数组,java,Java,我正在排序一个2D数组,有一些问题。当我排序时,它开始为第一对夫妇工作,但没有完成。这是我的代码,然后我将发布我的输出。sectionArray[]的第一部分包含两个部分。在sectionArray[]的第二部分中,[]包含不同的学生对象。我需要为每个部分按字母顺序对这些对象的字符串名称进行排序 public void sortByName(){ String temp; for(int i = 0; i < 2; i++){ for (int a = 0;

我正在排序一个2D数组,有一些问题。当我排序时,它开始为第一对夫妇工作,但没有完成。这是我的代码,然后我将发布我的输出。sectionArray[]的第一部分包含两个部分。在sectionArray[]的第二部分中,[]包含不同的学生对象。我需要为每个部分按字母顺序对这些对象的字符串名称进行排序

public void sortByName(){
    String temp;
    for(int i = 0; i < 2; i++){
        for (int a = 0; a < sectionArray[i].length-1; a++){
            if (sectionArray[i][a].getName().compareToIgnoreCase(sectionArray[i][a+1].getName()) > 0){
                temp = sectionArray[i][a].getName();
                sectionArray[i][a].setName(sectionArray[i][a+1].getName());
                sectionArray[i][a+1].setName(temp);

            }
        }
    }

}

也许您可以使用比较器:

Arrays.sort(myList, new Comparator<Student>() {
    @Override
    public int compare(Student s1, Student s2) {
        return s1.getName().compareTo(s2);
    }

});
Arrays.sort(myList,newcomparator(){
@凌驾
公共整数比较(学生s1、学生s2){
返回s1.getName().compareTo(s2);
}
});

发布输入将很有帮助您的第二个
周期中有一个错误,您没有考虑数组的最后一个元素。你的气泡排序是错误的。您只在数组上执行一次迭代,算法需要重新执行此操作,直到对数组->数组没有更改为止。按照答案中的建议,最好使用内置的合并排序。提示:您需要使用此排序,而不是第二个
进行
cycle@jend我尝试过使用Arrays.sort方法,但它不起作用,因为我正在访问对象的字符串。例如,当我执行此操作时,“Arrays.sort(sectionArray[0]);”会出现此错误“java.lang.ClassCastException:Student不能强制转换为java.lang.Comparable”要么让Student实现接口,要么将比较器作为第二个参数传递给Arrays.sort(…),就像我发布的那样。您可以将
字符串
转换为
char[]
Arrays.sort(myList, new Comparator<Student>() {
    @Override
    public int compare(Student s1, Student s2) {
        return s1.getName().compareTo(s2);
    }

});