【发布时间】:2012-10-09 11:20:27
【问题描述】:
使用下面的代码,我尝试对二维数组进行排序
int[][] d2 = {
{4,5,1},
{4,1,1},
{1,7,1},
{3,3,2},
{1}
};
java.util.Arrays.sort(d2, new java.util.Comparator<int[]>() {
public int compare(int[] a, int[] b) {
return a[0] - b[0];
}
});
我排序后显示数组
for (int r=0; r<d2.length; r++) {
for (int c=0; c<d2[r].length; c++) {
System.out.print(" " + d2[r][c]);
}
System.out.println("");
}
我得到的结果是这样的
1 7 1
1
3 3 2
4 5 1
4 1 1
我希望结果两个是这样的
1
1 7 1
3 3 2
4 5 1
4 1 1
要按照上述方式对数组进行排序,需要做什么?
我尝试将{1} 替换为{1,0,0},但即使对于{1,0,1},它仍然给出相同的结果。
【问题讨论】:
-
您需要在比较器中添加更多条件(如果第一个元素相等,则返回数组长度的差异)。
-
您只想比较第一个元素吗?
-
我同意@nhahtdh,你需要修改你的比较方法来处理数组的长度。
-
@Sangeet Menon:您能否说明您不希望对具有相同第一个元素的数组进行排序?此外,了解您希望如何处理不同长度的数组也会很有帮助:仅按长度还是按其元素?
-
@SangeetMenon.. 请记住接受满足您需要的答案之一..
标签: java arrays multidimensional-array sorting comparator