我在java中知道IdentityHashMap的概念,但直到现在我才开始使用它。有人可以向我解释一下我们必须在java中使用IdentiyHashMap的实际用途或真实情况。
答案 0 :(得分:2)
有时候您需要类似hashmap的行为(将数据与键相关联),但键必须是对象的特定副本而不是对象的值。这就是IdentityHashMap为您所做的。
例如,我在XSLT编译器中使用它来跟踪必须与解析树中的特定节点相关联的瞬态上下文信息。在树的其他地方可能有一个具有相同值的节点,因此具有相同的哈希码并且比较相同,但它出现的上下文会有所不同,所以我需要能够单独查找它们。
基本上:是的,有些情况下它很有用。你可能永远不会遇到它们,但它们只是普遍存在,值得包含在库中,而不是强迫我们这些需要它的人每次都重新发明它。