java - 我是否需要定义自己的 hash 和 equal 方法?

标签 java hashcode

如果我需要使用 InfoName 作为 HashMapkey,我是否需要定义我自己的 hashCode() equals() 方法?我认为没有必要,因为 String name 变量足以确保 InfoName 的每个对象都不同。

public class InfoName {
    enum Type {
        company, product;
    }

    public String name;
    public Type type;

    public InfoName(String name, Type type) {
        this.name = name;
        this.type = type;
    }
}

最佳答案

the String "name" variable will be enough to make sure each object of InfoName is different

如果您只想在 InfoName 中使用 name,那么只需将 String 键入 namekey 因为它已经覆盖了 equals()hashCode()

你需要覆盖 InfoName 类中的 equals()hashCode(),否则 JVM 怎么知道你的属性/标准用于哈希和相等性检查。

关于java - 我是否需要定义自己的 hash 和 equal 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31438016/

相关文章:

java - Parquet Writer 到缓冲区或字节流

c# - .NET 的 ManualResetEvent 和 WaitHandle 的 Java 等价物

java - 在 core-1.1.0-runtime.jar 模块中发现重复的类 android.support.v4.app.INotificationSideChannel

java - 我不希望 JTable 用省略号截断文本

c# - 如何使用哈希字节比较 2 张图像是否相同?

java - ArrayList .contains() 有时为真,有时为假

java - Spark 是否在其集群中维护哈希函数?

java - 如何禁用和重新启用标签

java - 为大对象创建 .hashcode() 和 .equals() 方法

java - 为什么 Guava Sets::hashCode Impl 有一个带有双补码的奇怪循环更新?