java - 在 Java 中使用任意对象作为映射键有什么缺点吗?

标签 java collections maps

我的应用程序中有两种对象,其中一种对象恰好有一个对应的另一种对象。

跟踪这种关系的明显选择是 Map<type1, type2> ,就像一个 HashMap。但不知何故,我很怀疑。我可以将一个对象用作 Map 中的键,传递它,将它也放在另一个集合中,并随时从 Map 中检索它的伙伴吗?

创建对象后,我传递的只是一个标识符,对吧?所以那里可能没问题。如果我对 key 进行序列化和反序列化会怎样?

还有其他注意事项吗?我是否应该使用其他东西来关联对象对,例如我自己生成的数字?

最佳答案

  1. key 需要正确实现.equals().hashCode()
  2. key 不得 以任何方式更改它作为 key 使用时的 .hashCode()
  3. 理想情况下,在 HashMap 中用作键的任何对象都应该是不可变的。这将自动确保 2. 始终成立。
  4. 原本可能被 GC 处理的对象在用作键和/或值时可能会保留下来。

关于java - 在 Java 中使用任意对象作为映射键有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/635014/

相关文章:

mysql - 如何根据地址与特定地址的距离来过滤地址数据库的结果?

android - 如何在 android api v2 [Android] 的谷歌地图中仅显示特定区域/区域

php - 谷歌地图标记未显示在资源管理器或 Chrome 中

Java 用 "broken vertical bar"分割 ISO-8859-1 字符串

java - 安装了两个JDK,如何在Eclipse中切换java编译器

java - 使用 Gson 将 JSON 转换为 POJO : JsonSyntaxException

java - 具有该位置 [5] 的参数不存在;

java - 首先在 Object.property1 上对 Map<String, Object> 进行排序,然后对于每个 Object.property1,按 Object.property2 排序

java - 来自 map 的 TextView

wpf - 具有动态集合属性的 ViewModel