使用 java 对二维字符串数组进行排序

Sorting 2d String array using java

我正在尝试对作为用户输入的字符串二维数组进行排序。但是此代码在某些情况下有效,而在某些情况下无效。

密码是:

 public class Source {
    public static void main(String args[]) throws Exception {
        Scanner sc = new Scanner(System.in);
        String[][] customerDetails= new String[5][3];
        customerDetails[0][0]="10";
        customerDetails[0][1]="Raj";
        customerDetails[0][2]="Chennai";
  
        customerDetails[1][0]="100";
        customerDetails[1][1]="Akshay";
        customerDetails[1][0]="Pune";

        customerDetails[2][0]="20";
        customerDetails[2][1]="Simrath";
        customerDetails[2][2]="Amristar";

        customerDetails[3][0]="30";
        customerDetails[3][1]="Gaurav";
        customerDetails[3][2]="Delhi";

        customerDetails[4][0]="101";
        customerDetails[4][1]="Ganesh";
        customerDetails[4][2]="Chennai";

    
        
        /*for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 3; j++) {
                //customerArray[i][j] = sc.nextLine();
            }
        }*/

        Arrays.sort(customerArray, (a, b)->a[0].compareTo(b[0]));
        
        for (int y = 0; y < 5; y++) {
            for (int z = 0; z < 3; z++) {
                System.out.println(customerArray[y][z]);
            }
        }
    }
}

我在此代码中提供了直接输入。我想将数字排序为 String

你得到了错误的答案,因为你比较的是二维数组每一行的第 0 个索引,它们是字符串。因此,根据字符串比较逻辑,输出是正确的。要将排序顺序设为整数,您必须在比较器中将每行的第 0 个索引转换为整数。

像下面这样修改您的排序方法调用,它应该会按照您的预期工作,因为 a[0]b[0] 在比较之前被转换为整数:

Arrays.sort(customerArray, (a, b)->Integer.valueOf(a[0]).compareTo(Integer.valueOf(b[0])));

输出:

10
Akhil
Pune
20
Rajni
Hyderabad
30
Praveen
Delhi
100
Rohith
Chennai
101
Sam
Bangalore