繁体   English   中英

如何检查两个对象在Java中是否具有相同的值?

[英]How to check whether two objects have the same values in Java?

我有两个相同类的对象。 该类包含许多其他类型不同的对象,例如List <>,...

确定这两个值是否相同的最佳方法是什么? 我正在尝试使用哈希码功能,但它似乎对我不起作用。

public class MyClass{
   List<OtherClass> myList;
   String foo;
   SubClass mySubClass;

   public MyClass(values...){ ... }
   ...
}

MyClass obj1 = new MyClass(values...);
MyClass obj2 = new MyClass(values...); // same values with obj1

if(obj1.hashcode() == obj2.hashcode()){
    System.out.println("This is what I want");
}else{
    System.out.println("This is what happens");
}

您需要重写MyClass的equals()和hashcode()方法。

您的助手可能会为您做到这一点。

您想要的是深入比较。 equals方法应进入每个列表并进行迭代和比较。

哈希码应使用每个元素的哈希码来生成哈希码。

请重写equals方法以检查是否相等。 不要将哈希码用于相等性检查。

请检查有关equals / hashcode的Java文档,因为这篇文章可能太冗长,无法放入diff。 在equals / hashcode及其用法之间。

为了比较两个列表,您可以简单地使用list.equals方法...无需为Ex迭代列表(请参见java.util.List文档中的equals);

// Sample Code...
public class MyClass {
    List<OtherClass> myList;

    public boolean equals(Object o) {
       if (o instanceof List) {
           myList.equals((List) o) ;
       }
       return false;
    }
}

希望这可以帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM