身份哈希映射的使用

问题描述:

我谷歌身份哈希映射的使用,但没有找到一个很好的答案。我也没有得到下面的java doc解释:身份哈希映射的使用

这个类的一个典型用途是拓扑保持对象图转换,如序列化或深度复制。为了执行这种转换,程序必须维护一个“节点表”,用于跟踪所有已处理的对象引用。节点表不能等同不同的对象,即使它们恰好相等。此类的另一个典型用途是维护代理对象。例如,调试工具可能希望为正在调试的程序中的每个对象维护一个代理对象。

有人可以提供身份哈希映射的好用例吗?

+0

也许你想读这个:http://*.com/questions/3563847/what-is-the-use-of-hashcode-in-java – GhostCat

我想在这里很重要的一点是

节点表一定不能等同于不同的对象,即使它们碰巧是等于

如果添加一个键值对的地图例如hashmap会使用equal方法检查密钥是否已经存在。但有些情况下,您想比较Java中真正标识的关键是对象引用(地址)。如Java文档中所述,一个用例可以是管理代理对象的映射。如果你有两个“相等”的对象,你仍然想为它们创建一个单独的代理对象。至于缓存,您希望将这些代理对象存储在地图中。然后使用源对象作为键和代理对象作为值的标识映射。

希望这可以让它更清晰一些。