我的应用程序中有两种对象,其中一种对象恰好有一个对应的另一种对象。
跟踪这种关系的明显选择是 Map<type1, type2>
,就像一个 HashMap。但不知何故,我很怀疑。我可以将一个对象用作 Map 中的键,传递它,将它也放在另一个集合中,并随时从 Map 中检索它的伙伴吗?
创建对象后,我传递的只是一个标识符,对吧?所以那里可能没问题。如果我对 key 进行序列化和反序列化会怎样?
还有其他注意事项吗?我是否应该使用其他东西来关联对象对,例如我自己生成的数字?
最佳答案
- key 需要正确实现
.equals()
和.hashCode()
- key 不得 以任何方式更改它作为 key 使用时的
.hashCode()
值 - 理想情况下,在
HashMap
中用作键的任何对象都应该是不可变的。这将自动确保 2. 始终成立。 - 原本可能被 GC 处理的对象在用作键和/或值时可能会保留下来。
关于java - 在 Java 中使用任意对象作为映射键有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/635014/