比较2个对象

时间:2014-11-29 15:14:18

标签: java

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

Student1对象具有marks1,marks2,marks3,name,age作为字段。 Student2对象具有marks1,marks2,marks3,name,age作为字段。 因此,要检查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对象有很多字段怎么办? Student1对象有这样的100个这样的字段,包括marks1,marks2,marks3,name,age,address,color,class,country,section,x,y,z Student2对象有mark1,marks2,marks3,name,age,address,color,class,country,section,x,y,z这样的100个这样的字段

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

有人告诉我这可以通过java中的序列化完成。任何人都可以告诉我们如何处理它或其他任何方式?

4 个答案:

答案 0 :(得分:2)

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

对于Eclipse:

  1. 右键单击代码中的任何白色区域
  2. 点击“Generate equals and hashCode method
  3. 在等号方法中选择所需的字段
  4. 这将自动创建您所需的等于方法。

答案 1 :(得分:1)

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

样本用法:

public boolean equals(Object obj) {
   return EqualsBuilder.reflectionEquals(this, obj);
}

答案 2 :(得分:0)

我认为你需要了解平等实际意味着什么

如果你的意思是两个对象相等(即使它们指向不同的内存位置),当它们的所有字段(相等)时,你必须比较所有字段。无论您是手动执行还是IDE为您或第三方库执行此操作,这都是不同的事情

如果你的意思是两个对象只有在指向相同的内存位置时才相等,那么你可以进行==比较

答案 3 :(得分:0)

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