当前位置: 首页 > 面试题库 >

如何在Java中比较两个对象数组?

谭伟
2023-03-14
问题内容

我有两个像这样的对象数组:

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对象。 如果我将它们的两个属性都设置为完全相同的值,然后验证它们是否相同 但是,这些方法都不返回真实值。我已经检查了每个属性,并且它们匹配。 如何比较这两个对象以验证它们是否相同? 问题答案: 你需要提供自己的实现。 如果哈希表中有可能使用你的对象,则还应该重写。一个合理的实施将是该对象的字段的哈希码喜欢的东西结合起来:

  • 但是,这两种方法都不返回真值。我已经检查了每个属性,它们都匹配。 如何比较这两个对象以验证它们是相同的?

  • 问题内容: 在java中如何比较两个对象是否相等?何时使用equals和hashcode? 问题答案: 理论(针对语言律师和数学倾向者): (javadoc)必须定义一个等价关系(它必须是自反的,对称的和可传递的)。另外,它必须是一致的(如果未修改对象,则它必须保持返回相同的值)。此外,必须始终返回false。 (javadoc)也必须是一致的(如果未根据修改对象equals(),则它必须保持返回

  • 在爪哇中。如果我们必须将一个对象与另一个对象进行比较。我们比较该对象中的每个字段。 学生 1 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。学生 2 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。因此,要检查2名学生是否相等...我们比较每个字段。 但是,如果 Student 对象有许多字段,该怎么办?学生1对象有标记1,标记2,标记3,名称,年龄,地址,颜色,类,国家,部

  • 问题内容: 这是一个简单的问题-给定两个URL,是否有一些内置方法或一个Apache库来确定它们在逻辑上是否相等? 例如,这两个URL相等: 问题答案: 尽管(以及有问题的)这些特定示例 未 返回,但我认为这是唯一可以假定等效的情况(因为HTTP协议中没有空路径)。 这些URI 并且可以 不 被认为是等价的。 也许您可以使用包装在实用程序中的方法来显式处理此特定情况。

  • 这是我的JSON文件。我只是不知道如何将对象PAV-001中的这个随机字符串()与node.js中的PAV-002中的所有这类字符串进行比较。只是想知道他们是否平等。谢谢!