java - 如何在两个对象的java相等性中评估列表

标签 java

我有一个 arrayList,我想使用 contains(Thing o) 方法来检查这两个对象是否相等,我重写了 Thing 类中的 equals() 方法,但是当我调用 contains 方法时这不起作用! 这是我的东西类:

public class Thing{

private int id;

//getter setter

@Override
public boolean equals(Object o) {
    if(!(o instanceof Thing))
        return false;
    if(id == ((Thing)o).getId())
        return true;
    return false;
}
}

是否也需要覆盖 hashCode() 方法?如果是,如何覆盖它?

最佳答案

您应该覆盖 hashCodeArrayList 类不使用 hashCode 方法,因此 现在 没有必要,但如果在任何时候您要使用您的类HashMapHashSet 或任何其他使用 hashCode 的集合,程序将中断,因为 hashCode and equals are not consistent .

对于这种情况,hashCode 的一个简单实现可以是:

public int hashCode() {
    return id;
}

关于java - 如何在两个对象的java相等性中评估列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18286810/

相关文章:

java - 在 Java 中创建 InetAddress 对象

javascript - 将需要 CommonJS 功能的 JavaScript 编译为 native Java

java - OneToMany、ManyToOne 为什么子级中的父级值为空?

java - textView.SetText 仅在文本较长时有效

java - 加载 Java 配置文件的整个文件夹?

java - 使用可比较的接口(interface)对 Java 中的对象集合进行排序

Java:存储 HashMap 的理想文件格式?

java - 如何使所有这些 Swing 控件具有相同的宽度?

java - 如何绘制正弦图?

java - 反序列化 java.awt.Color -> java.io.InvalidClassException