java - 我们可以在 Java 中使用对象作为 hashmap 中的键吗?

标签 java hashmap

如何将对象用作 HashMap 中的键。如果您使用一个对象作为键,您是否需要覆盖该对象的 equals 和 hashcode 方法?

最佳答案

一个简单的经验法则是在 HashMap 中使用不可变对象(immutable对象)作为键

因为:

如果它是可变的,那么 hashcode() 值或 equals() 条件可能会改变,您将永远无法从您的 HashMap.

更准确地说,用于计算equals()hashcode() 的类字段应该是不可变的!

现在,假设您创建自己的类:

  • 要比较类中的两个对象,您必须覆盖 equals()
  • 要将它用作任何基于哈希的数据结构中的键,您必须重写 hashcode()(同样,请牢记不变性)

请记住,如果两个对象 equal(),那么它们的 hashcode() 也应该相等!

关于java - 我们可以在 Java 中使用对象作为 hashmap 中的键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45831828/

相关文章:

java - 克隆 JavaFX 节点?

java - 尝试将 hashmap getValue() 解析为 int 时出错

java - 映射 containsKey 返回 false

java - 无法编码可序列化数据的值(value)

Java Hashmap 迭代 : Look at two values at once?

java - 在 Eclipse 中使用代号一

java - 使用java获取客户端机器的ip地址

java - JdbcTemplate:以字符串形式访问 MySQL VARBINARY 字段

java - 从 android.com 运行 hellogridview 时出现问题

java - 从存在于 arraylist 中的 hashmap 中消除空键