Java 如何将二维数组按升序排序?

Java 如何将二维数组按升序排序?,java,arrays,sorting,multidimensional-array,Java,Arrays,Sorting,Multidimensional Array,我有一个二维数组,如下所示: [0] [4] [1] [3] [0] [7] [7] [8] [1] [2] [7] [3] [0] [4] [0] [7] [1] [2] [1] [3] [7] [3] [7] [8] 我想要这样的东西: [0] [4] [1] [3] [0] [7] [7] [8] [1] [2] [7] [3] [0] [4] [0] [7] [1] [2] [1] [3] [7] [3] [7] [8] 这将获取数组a,并按列0对其排序。如果cumlumn0的数

我有一个二维数组,如下所示:

[0] [4]
[1] [3]
[0] [7]
[7] [8]
[1] [2]
[7] [3]
[0] [4]
[0] [7]
[1] [2]
[1] [3]
[7] [3]
[7] [8]
我想要这样的东西:

[0] [4]
[1] [3]
[0] [7]
[7] [8]
[1] [2]
[7] [3]
[0] [4]
[0] [7]
[1] [2]
[1] [3]
[7] [3]
[7] [8]

这将获取数组
a
,并按列
0
对其排序。如果cumlumn
0
的数字相等,它将查看列
1
进行排序

int[]a={0,4},{1,3},{0,7},{7,8},{1,2},{7,3};
对于(int i=0;ia[i+1][0]){
int[]temp={{a[i+1][0],a[i+1][1]};
a[i+1][0]=a[i][0];
a[i+1][1]=a[i][1];
a[i][0]=temp[0][0];
a[i][1]=temp[0][1];
i=0;
}如果(a[i][0]==a[i+1][0]){
如果(a[i][1]>a[i+1][1]){
int[]temp={{a[i+1][0],a[i+1][1]};
a[i+1][0]=a[i][0];
a[i+1][1]=a[i][1];
a[i][0]=temp[0][0];
a[i][1]=temp[0][1];
i=0;
}
}
}

使用比较器比较第一个单元格,如果相等,则比较第二个单元格。当对
2D
数组进行流式处理时,结果是
1D
数组的流(在这种情况下,长度为2)。然后使用比较器对它们进行排序,然后作为
2D
数组返回

int[]]array={{0,4},{1,3},{0,7},{7,8},{1,2},{7,3};
Comparator first=Comparator.comparingInt(a->a[0]);
比较器秒=比较器。比较器(a->a[1]);
数组=数组。流(数组)
.排序(第一,然后比较(第二))
.toArray(int[]]::新建);
for(int[]a:array){
System.out.println(Arrays.toString(a));
}
印刷品

[0, 4]
[0, 7]
[1, 2]
[1, 3]
[7, 3]
[7, 8]
这里是一种使用选择排序的非流方法。但对于大型数据集来说,效率不是很高

for(int i=0;i数组[i][0]
||数组[k][0]==数组[i][0]
&&数组[k][1]>数组[i][1]){
//只需交换每个1D阵列
int[]temp=数组[i];
数组[i]=数组[k];
数组[k]=温度;
}
}
}
或者按照善意的建议,使用上述比较器。这在不创建新数组的情况下执行就地排序

Arrays.sort(首先是数组,然后是比较(第二));

您可以编辑您的帖子吗?不清楚2D阵列的布局是什么。另外,试着更详细地解释你的问题。欢迎来到StackOverflow,这个社区不是免费的编码服务。请展示您试图解决任务和解决特定问题的实际尝试,肯定有人会很快给出一个aswer,首先是偶数条目,然后是奇数条目?如果是,您想要的内容中的最后一个条目将被切换或不创建新数组
array.sort(array,Comparator.comparingit((int[]行)->行[0])。然后比较它((int[]行)->行[1])。除非我弄错了,如果您用
int[]temp=a[I]替换您的掉期;a[i]=a[i+1];a[i+1]=温度稍微干净一点。这只是交换实际的1D阵列,而不是创建一个新阵列。但无论如何,原著都是如此+1。