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

新手上路,请多包涵

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

原文由 Mahesh Kshirsagar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 343
1 个回答

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

因为:

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

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

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

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

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

原文由 Sarthak Mittal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题