Java 我可以比较数组与数组列表的相等性吗?

Java 我可以比较数组与数组列表的相等性吗?,java,arrays,arraylist,Java,Arrays,Arraylist,我有整数数组: int[] arrA = {1,2,3,4,5,6,7,8,9}; int[] arrB1= {7,3,4,1,5,8,9,2,6}; int[] arrB2= {9,5,1,4,7,6,8,2,3}; int[] arrB3= {4,6,1,3,8,9,5,7,2}; int[] arrB4= {2,3,1,5,8,9,4,6,7}; int[] arrB5= {1,2,3,4,5,6,7,8,9}; 所有arrBs将添加到列表中,如下所示: List<int[]>

我有整数数组:

int[] arrA = {1,2,3,4,5,6,7,8,9};
int[] arrB1= {7,3,4,1,5,8,9,2,6};
int[] arrB2= {9,5,1,4,7,6,8,2,3};
int[] arrB3= {4,6,1,3,8,9,5,7,2};
int[] arrB4= {2,3,1,5,8,9,4,6,7};
int[] arrB5= {1,2,3,4,5,6,7,8,9};
所有
arrB
s将添加到列表中,如下所示:

List<int[]> list= new ArrayList<int[]>();

list.add(arrB1);
list.add(arrB2);
list.add(arrB3);
list.add(arrB4);
list.add(arrB5);
我知道
arrB5
等于
arrA
,但为什么我总是得到false?我做的比较对吗?

from做的正是这一点。它还处理多维数组


您还应该尝试使用
数组。deepEquals(a,b)
您正在数组上调用
equals
,这将通过引用进行比较,因为数组不会覆盖
equals
。您希望比较数组中的值

(在这种情况下,当你处理
int[]
时,你不需要
deepEquals
——事实上,调用
deepEquals
不会编译,因为
int[]
不是
对象[]

所以试试Arrays.equals(arrB5,arrA)。

起初这让人困惑,因为我认为
equals
的全部目的是测试值是否相等,但由于数组与大多数其他对象不同,它们不能真正覆盖
Object.equals
(检查引用是否相等),因此最终还是有意义的。然而,
等于
这样工作是非常违反直觉的。@ValekHalfHeart。的确是一门课。只是它没有覆盖
equals
方法。@ValekHalfHeart:Well数组可以被实现来覆盖
equals
(和
hashCode
toString
)-这不是语言的设计方式。可能是个错误;可能不是。。。但现在改变太晚了。
boolean isEqual=false;
for(int index=0; index<list.size(); index++){
    if(list.get(index).equals(arrA)){
          isEqual=true;
    }
    System.out.println(isEqual);
}