比较数组并比较两个数组中的每个元素

时间:2012-06-21 14:44:37

标签: java arrays object

我是java的新手。请帮帮我。

我想比较Array对象和两个数组中的每个元素。那么我应该使用什么来检查它们是否相同:equalsdeepEqualscompareTo

2 个答案:

答案 0 :(得分:2)

我不确定我是否理解你的问题,但也许这会对你有所帮助。

Arrays.equals(array1, array2)int[10]等一维数组一起使用。 Arrays.deepEquals(array1,array2)适用于int[2][4]之类的一个或多个维数组。根据您想要比较的数组的维数选择一个。

修改

评论中的代码无法编译,但我开始理解您的问题。您需要知道数组是对象,默认情况下,equals(Object obj)方法返回this == obj。这意味着它们不会通过存储在它们中的值来比较数组,而只是检查来自其他对象obj(其他数组)的引用是否包含对您所比较的相同数组的引用(this)。

你可以这样检查

Integer[] a1=new Integer[2];
Integer[] a2=new Integer[2];
for (int i=0; i<2; i++){
    a1[i]=i;
    a2[i]=a1[i];
}
System.out.println(a1.equals(a2));//false

但是当我更改i2来自i1的点数组时,等于将返回true

a2=a1;//now my i2 reference points array from i1
System.out.println(a1.equals(a2));//true

要比较数组中的元素,需要迭代数组。您可以编写自己的代码来执行此操作,也可以使用可以为您执行此操作的现成方法。 Java在类java.util.Arrays中提供了这样的方法,但是没有人阻止你使用像Apache Commons这样的其他库 - &gt; ArrayUtils类。

答案 1 :(得分:1)

正如api所说,ArrayUtils.equals进行浅层比较。 Arrays / ArrayUtils.deepEquals进行深度比较......&lt;&lt;这可能是你想要的(deepEquals),除非你有理由只想进行浅层比较

相关问题