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

覆盖equals方法以比较Java中的多个字段

段干帅
2023-03-14
问题内容

在Java中重写equals方法以比较多个字段的最佳方法是什么?例如,我在类中有4个对象,分别为o1,o2,o3,o4,我想将所有这些对象与传递给equals方法的对象进行比较。

if (o1 != null && o2 != null && o3 != null && o4 != null && obj.o1 != null
    && obj.o2 != null && obj.o3 != null && obj.o4 != null
    && o1.equals(obj.o1) && o2.equals(obj.o2) && o3.equals(obj.o3) && o4.equals(obj.o4)) {
    do something
}

这段代码的问题在于它不清楚,如果我们有更多字段,就很难轻易修改。有没有更好的方法来实现这一目标?


问题答案:

一种便宜的方法是:

Arrays.asList(o1, o2, o3, o4).equals(Arrays.asList(obj.o1, obj.o2, obj.o3, obj.o4));


 类似资料:
  • 问题内容: 我试图覆盖Java中的方法。我有一堂课,基本上有2个数据字段和。现在,我想重写方法,以便可以在2个对象之间进行检查。 我的代码如下 但是当我写它给我错误时,因为方法只能比较并且是。 Solution 我按照建议使用运算符,问题解决了。 问题答案: Output: `run: – Subash Adhikari - VS - K false – Subash Adhikari - VS

  • 我有一个POJO类,它已经定义了equals和hashcode,并用于许多保存到DB的遗留对象,因此不能改变该对象的工作方式。 她是一个简化的代码: 因此,我想基于雇员、startDate和contractCost将福利合同添加到中,以便消除基于这些字段的同一雇员的重复合同。 如果我不能重新定义equals和hashcode,那该怎么做呢?

  • 问题内容: 今天,我遇到了一个有趣(非常令人沮丧)的方法问题,该问题导致我认为是一个经过良好测试的类崩溃了,并导致了一个错误,使我花了很长时间来追踪。 为了完整起见,我没有使用IDE或调试器-只是老式的文本编辑器和System.out。时间非常有限,这是一个学校项目。 无论如何- 我开发一个基本的购物车可能包含的Book对象。为了贯彻落实,以及对车的方法,我想检查,如果在已经存在。所以我走了 在测

  • 问题内容: 好的,我从很多地方和来源都听说过,每当我覆盖equals()方法时,我也需要覆盖hashCode()方法。但是请考虑以下代码 这里的输出为true,完全按照我想要的方式为false,我根本不关心重写hashCode()方法。这意味着hashCode()覆盖是一种选择,而不是每个人都说的强制性选择。 我想要第二次确认。 问题答案: 它对您有用,因为您的代码未使用任何需要API的功能(Ha

  • 问题内容: 在java中为什么需要覆盖equals和hashcode方法?什么时候用到? 问题答案: 让我们尝试通过一个示例来理解它,如果我们不进行覆盖而覆盖并尝试使用。 假设我们有一个类像这样那样的两个对象是相等的,如果他们等于(和生成) 仅覆盖 如果仅覆盖被覆盖,则在你第一次调用时将散列到某个存储桶,而在调用时将散列到其他存储桶(因为它们具有不同的)。因此,尽管它们是相等的,但由于它们没有散列

  • 我有两个具有相同元素和值的对象列表: Parameter类如下所示: 我想通过单元测试将其与具有相同元素和值的相同对象列表进行比较。 我的Method类(我在Method对象之前创建,该对象存储了参数对象列表): 我的问题是在Equals方法,在点this.parameters==...: 顺便说一句,此方法中的所有其他条件都在工作。与对象相比,修饰符、名称和类型正在返回正确的值。因为这些是基本字