假设我们有一个二维数组,如下所示:
int[][] source = {
{ 3, 5, 6, 1},
{ 3, 3, 5, -6},
{ -1, -3, -5, -6},
{ 124, 43, 55, -66}
};
我们如何按字典顺序对多维数组source
进行排序?
因此,我希望它是:
[ [ -1, -3, -5, -6],
[ 3, 3, 5, -6],
[ 3, 5, 6, 1],
[124, 43, 55, -66] ]
此站点上的许多问题似乎仅建议按每个数组的第一个元素或第二,第三等进行排序,而没有考虑整个数组。
答案 0 :(得分:6)
从JDK9开始,有一个名为Arrays.compare
的新方法,使您可以按字典顺序比较两个给定的数组。
文档中Arrays.compare
的简短描述:
如果两个数组共享一个公共前缀,则词典 比较是比较两个元素的结果,就像 Integer.compare(int,int),在相应数组内的索引处 这是前缀长度。否则,一个数组是的适当前缀 另外,字典比较是比较 两个数组长度。
鉴于您要修改 source
数组,然后使用Arrays.sort
就足够了:
Arrays.sort(source, Arrays::compare);
鉴于您想要一个 new 数组作为结果,那么我将采用流方式:
int[][] sorted = Arrays.stream(source)
.sorted(Arrays::compare)
.toArray(int[][]::new);