使用 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
我正在尝试对作为用户输入的字符串二维数组进行排序。但是此代码在某些情况下有效,而在某些情况下无效。
密码是:
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