在Java中使用任意对象作为Map键的任何缺点?

Han*_*etz 6 java collections maps

我的应用程序中有两种对象,其中一种对象只有一种对应的对象.

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

创建一个对象后,我传来的只是一个标识符,对吧?所以可能没有问题.如果我序列化和反序列化密钥怎么办?

还有其他警告吗?我应该使用其他东西来关联对象,就像我自己生成的数字一样吗?

Joa*_*uer 22

  1. 关键需要贯彻.equals().hashCode()正确
  2. 密钥不能以任何方式更改,以便.hashCode()在将密钥用作密钥时更改其值
  3. 理想情况下,任何用作a中键的对象HashMap都应该是不可变的.这将自动确保2.始终保持为真.
  4. 当它们用作键和/或值时,可能会保留可能以其他方式进行GC的对象.


Aar*_*paa 7

我的应用程序中有两种对象,其中一种对象只有一种对应的对象.

这听起来像是一个有关系,因此可以使用一个简单的属性来实现.