这可能是一个相当基本的问题,但是我似乎找不到在线上需要的答案。
但是,对二维数组进行排序的最佳方法是什么?
我有一个预填充的二维数组'mainArr [] []',其中包含数据:
John Doe - 678DGHJ,Sport
Lisa Parker - 432KH3,Car
John Doe - 678DGHJ, Drive
Peter Bear 4HJ4K3,Bus
John Doe - 4HJK4,Loose
逗号是数组中维之间的分隔符。 如何首先按数组中的列对其进行排序,然后按数组第二部分中的值对其进行排序。
上面排序的数据将变为:
John Doe - 4HJK4,Loose
John Doe - 678DGHJ,Drive
John Doe - 678DGHJ,Sport
Lisa Parker - 432KH3,Car
Peter Bear 4HJ4K3,Bus
所以
数组中的排序数据mainArr[0][0]
将等于
mainArr[John Doe - 4HJK4][Loose]
答案 0 :(得分:2)
您可以使用如下所示的Comparator
对数组进行排序,
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String args[]) {
String[][] mainArr = new String[][] {{"John Doe - 678DGHJ", "Sport"}, {"Lisa Parker - 432KH3", "Car"}, {"John Doe - 678DGHJ", "Drive"}, {"Peter Bear 4HJ4K3", "Bus"}, {"John Doe - 4HJK4", "Loose"}};
Arrays.sort(mainArr, new Comparator<String[]>() {
@Override
public int compare(String[] entry1, String[] entry2) {
if (entry1[0].equals(entry2[0])) {
return entry1[1].compareTo(entry2[1]);
}
return entry1[0].compareTo(entry2[0]);
}
});
for (int i = 0; i < mainArr.length; i++) {
System.out.println(mainArr[i][0] + ", " + mainArr[i][1]);
}
}