[英]Sorting 2D array of strings in alphabetical order
请帮忙,我在如何对两列中的字符串数组进行排序时遇到了麻烦。 所以,我有两列:它们都包含一个字符串。 我需要按字母顺序对第一列进行排序,而第二列不应该打乱,因此,它应该与排序后的第一列相对应。
谁能看到我需要在下面的代码中放置排序方法的位置:
public static void main(String[] args) {
String[][] emp = {
{"Victor ", "ZSA"},
{"Fred ", "HAN"},
{"Drake ", "SOL"},
{"Albert ", "TUR"},
{"Eric ", "CAN"}};
System.out.println("String 1: String 2: ");
for (int i = 0; i < emp.length; i++) {
for (int j = 0; j < emp[0].length; j++) {
System.out.printf("%9s", emp[i][j]);
}
System.out.println();
}
}
output 应该是:
Albert TUR
Drake SOL
Eric CAN
Fred HAN
Victor ZSA
您可以创建一个自定义比较器,实现接口Comparator
,它将String[]
arrays(数组 2D 行)作为参数并比较两个 arrays 的第一个元素,如下所示:
public class CustomComparator implements Comparator<String[]> {
@Override
public int compare(String[] row1, String[] row2) {
return row1[0].compareTo(row2[0]);
}
}
在您可以在main
方法中执行排序之后:
public static void main(String[] args) {
String[][] emp = {
{"Victor ", "ZSA"},
{"Fred ", "HAN"},
{"Drake ", "SOL"},
{"Albert ", "TUR"},
{"Eric ", "CAN"}};
Arrays.sort(emp, new CustomComparator());
System.out.println("String 1: String 2: ");
for (int i = 0; i < emp.length; i++) {
for (int j = 0; j < emp[0].length; j++) {
System.out.printf("%9s", emp[i][j]);
}
System.out.println();
}
}
您可以使用Arrays.sort(T[],Comparator)
方法如下:
String[][] emp = {
{"Victor ", "ZSA"},
{"Fred ", "HAN"},
{"Drake ", "SOL"},
{"Albert ", "TUR"},
{"Eric ", "CAN"}};
// sort by first column alphabetically
Arrays.sort(emp, Comparator.comparing(arr -> arr[0]));
// output
Arrays.stream(emp).map(Arrays::toString).forEach(System.out::println);
[Albert , TUR]
[Drake , SOL]
[Eric , CAN]
[Fred , HAN]
[Victor , ZSA]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.