当前位置: 首页 > 知识库问答 >
问题:

比较两个对象

端木高邈
2023-03-14

在爪哇中。如果我们必须将一个对象与另一个对象进行比较。我们比较该对象中的每个字段。

学生 1 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。学生 2 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。因此,要检查2名学生是否相等...我们比较每个字段。

if(Student1.marks1 == Student2.marks1 && 
   Student1.marks2 == Student2.marks2 && 
   Student1.marks3 == Student2.marks3 && 
   Student1.name == Student2.name && 
   Student1.age == Student2.age)
{
    // we say that Students are same 
}

但是,如果 Student 对象有许多字段,该怎么办?学生1对象有标记1,标记2,标记3,名称,年龄,地址,颜色,类,国家,部分,x,y,z喜欢这个100个这样的字段 Student2对象有标记1,标记2,标记3,名称,年龄,地址,颜色,类,国家,部分,x,y,z像这100个这样的字段

那么我们现在应该如何检查两个对象是否相等。。?使用上述方法…检查每个字段是没有意义的,因为它们是100个这样的字段。

有人告诉这可以通过在java中序列化来完成。任何人都可以告诉我们如何去做或任何其他方式吗?

共有3个答案

东郭自珍
2023-03-14

您应该使用equals()来比较字符串,但最重要的是,您应该只在IDE中使用生成equals()和hashCode()函数,看看它为您生成了什么。这是一个有效、防傻瓜且简单的解决方案

鲁涵意
2023-03-14

如果您愿意使用外部库,Apache公共资源中有一个工具可以帮助您使用反射实现equals()方法。它被称为EqualsBuilder:

示例用法:

public boolean equals(Object obj) {
   return EqualsBuilder.reflectionEquals(this, obj);
}
闾丘博超
2023-03-14

如果您使用的是IDE(如Eclipse),那么您无需担心。

对于日食 :

  1. 右键单击代码中的任何白色区域
  2. 点击“Generate equals and hashCode method”
  3. 在等于方法中选择所需的字段

这将自动创建您需要的equals方法。

 类似资料:
  • 创建一个名为“Circle”的Java类来实现Java。io。可串行化接口,并基于半径对圆进行建模。半径不能小于零。实现radius的getter和setter方法。还包括在circle类中重写toString。创建类的比较器,用于比较Circle类型的两个对象。 这就是我目前所拥有的 这是我的比较器类 我的问题是我做得对还是不对?

  • 对于PostgreSQL(v9.5),JSONB格式提供了极好的机会。但现在我只能做一个相对简单的手术; 比较两个jsonb对象;查看一个文档与另一个文档相比有什么不同或缺失。 到目前为止我所拥有的 应该返回第1行与第2行的差异: 相反,它还返回重复项(

  • 使用RestAssured,我试图比较两个JSON对象。 示例:第一个JSON来自excel,我将其作为字符串读取并存储 第二个 JSON 是返回响应对象的响应,该响应对象实际上是一个 JSON 我想将这两者作为JSON对象进行比较,因为当我将响应转换为String并尝试进行比较时,如果JSON模式的顺序发生变化,我的断言就会失败。 我尝试了将字符串转换成JSON的方法,但是没有找到任何方法。有人

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

  • 我怎么能那么做?

  • 第一次来这里,所以我希望这是有意义的! 我有两个对象数组,比如l1和l2,我想在这两个列表之间进行比较,并在l3中得到一个不匹配的值。用户类包含2个字符串: 比如,l1包含:Java、JSF、JAXR、foo l2包含:JSF、JAXR 我可以对匹配的值进行比较,但不能对不匹配的值进行比较。这种逻辑似乎有缺陷。有什么帮助吗? 对于匹配值: 但是,对于不匹配,当我说不等于时,我得到的不是唯一的值,而