Java中二维数组不能用Arras.equals()比较
起因是学了稀疏数组的压缩和还原后,顺手用了个Arrays.equals()比较,返回false。这两个数组一摸一样,为什么返回false,去看了Arrays.equals()方法的源码发现没法比较二维数组。
public static boolean equals(int[] a, int[] a2) {
if (a==a2)
return true; //如果这两数组名字相同,返回true
if (a==null || a2==null)
return false; //如果两数组其中一个为空,返回false
int length = a.length;
if (a2.length != length)
return false; //如果这两个数组长度不同,返回false
for (int i=0; i<length; i++)
if (a[i] != a2[i])
return false; //每一个元素进行对比,如果有一个不同,返回false
return true; //走到这一步就说明数组中每个元素都相等,返回true
}
如果输入比较的是两个二维数组,在第4步中就会返回false,因为拿出来对比的是哈希值或者内存地址(这个地方我不是很清楚),并不是数组中的元素。
我就自己写了下 忽略健壮性
static boolean isEquals(int[][] a,int[][] a2){
//健壮性那些就先不管了默认都有数据
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if(a[i][j]!=a2[i][j])
return false;
}
}
return true;
}
浙公网安备 33010602011771号