【发布时间】:2016-03-23 16:05:00
【问题描述】:
我想按第二行升序对 2x3 数组进行排序。第一行的值必须相应地改变位置。
例如
1 3 5
4 2 6
应该变成
3 1 5
2 4 6
代码:
int[][] values = {{1, 5, 3},
{4, 6, 2}};
Arrays.sort(values, new Comparator<int[]>(){
public int compare(int[] o1, int[] o2) {
return (Integer.valueOf(o1[0]).compareTo(o2[0]));
}
});
System.out.println(Arrays.deepToString(values));
输出与输入相同。我认为错误来自compare 方法,但我不知道它是什么。这是什么?
【问题讨论】:
-
values包含两个元素。Arrays.sort根据比较器重新排列这两个元素。在这种情况下,第一个元素{1, 5, 3}确实小于{4, 6, 2},因此顺序不会改变。 -
你可以先转置数组stackoverflow.com/questions/26197466/…排序,然后再转置回来。
-
有没有办法按原样对二维数组进行排序,而不必转置它?
标签: java arrays sorting multidimensional-array