Java Arrays.sort()方法需要一维数组,但我也可以传递一个二维数组,那为什么我不能做int [] a = b(其中b是一个二维数组)?

我很难理解我可以将2D数组传递给javaArrays.sort()方法的概念.(我已经看过java文档,sort方法只能采用1D数组)
但是当我尝试以下代码时,我得到错误

int[][] b={{1,2},{2,3}};
int[] a=b;

但以下代码工作正常

int[][] temp = { { 1, 50, 5 }, { 2, 30, 8 }, { 3, 90, 6 },{ 4, 20, 7 }, { 5, 80, 9 }, };
Arrays.sort(temp, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
    return Integer.compare(o2[1], o1[1]);
}
});
最佳答案
Java没有真正的2D数组.它具有1D阵列的一维阵列.这意味着只要为int [] []元素传递比较器,就可以将int [] [] []传递给Arrays.sort.

例如

int[][][] a = { ... }
int[][] b = a[0];
int[] c = b[0];
int d = c[0];

你也可以写

Object[] x = a; // as int[][] is an Object.
Object[] y = b; // as int[] is an Object.
Object[] z = c; // doesn't compile. as int is not an Object.

转载注明原文:Java Arrays.sort()方法需要一维数组,但我也可以传递一个二维数组,那为什么我不能做int [] a = b(其中b是一个二维数组)? - 代码日志