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

标签 java

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

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

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() 方法。

您的 ide 可能可以为您做到这一点。

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

hashcode应该使用每个元素的hashcode来生成hashcode。

关于java - Java中如何检查两个对象是否具有相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48311904/

相关文章:

java - 屏蔽电话号码Java

java - SpringBoot Junit 测试 Autowiring 问题

java - 在 Java 中使用 jSlider 更改音频输出的音量

java - 更适合查找具有特定值的实例的索引的方法

java - 导入顺序似乎对编译成功很重要?

Java HtmlCleaner : Does not handle extended ascii characters

java - 将JSP页面添加到Spring服务中

java - 当 Spring 属性无效时提供更好的日志记录

java - 有没有办法在 Beam 的 ParDo 转换中创建 SpecificRecord 列表以写入 Parquet 文件?

java - 如何删除 Firebase 事件监听器?