繁体   English   中英

使用 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]);
            }
        }
    }
}

我在这段代码中给出了直接输入。 我想将数字排序为字符串

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

像下面这样修改您的排序方法调用,它应该根据您的期望工作,因为a[0]b[0]在比较之前被转换为 Integer:

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

Output:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM