如何在Java中比较两个对象数组?
我有两个像这样的对象数组:
Object[] array1 = {0, 1, 2, 3};Object[] array2 = {0, 1, 2, 3};
我想知道数组是否相等。我定义的是相等的,因为array1中的每个值都与array2中该位置的值相同。因此,这两个数组将相等。
为什么最好找出这两个数组是否相等?
if(array1 == array2)
不是一个很深的等式,所以它是行不通的,我不知道是否遍历每个元素并进行比较是解决此问题的最佳,最有效的方法。有没有人有更好的建议?
编辑:我需要一个可以放入嵌套数组的等于。
回答:
使用Arrays.deepEquals()
。这项功能Arrays.equals()
与嵌套数组相同,但也可以使用。
如果两个指定的数组彼此深度相等,则返回true。与
equals(Object[],Object[])
方法不同,此方法适用于任意深度的嵌套数组。如果两个数组引用都为null,或者两个数组引用都引用了包含相同数量元素的数组,并且两个数组中所有对应的元素对都非常相等,则认为它们是完全相等的。
如果满足以下任一条件,则两个可能为null的元素e1和e2完全相等:
- e1和e2都是对象引用类型的数组,并且Arrays.deepEquals(e1,e2)将返回true
- e1和e2是相同原始类型的数组,并且Arrays.equals(e1,e2)的适当重载将返回true。
- e1 == e2
- e1.equals(e2)将返回true。
请注意,此定义允许在任何深度使用null元素。
如果任何指定的数组通过一个或多个级别的数组直接或间接包含自身作为元素,则此方法的行为是不确定的。
以上是 如何在Java中比较两个对象数组? 的全部内容, 来源链接: utcz.com/qa/420278.html