Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能告诉我IdentityHashMap在java中的实际用途吗?_Java - Fatal编程技术网

有人能告诉我IdentityHashMap在java中的实际用途吗?

有人能告诉我IdentityHashMap在java中的实际用途吗?,java,Java,我知道java中IdentityHashMap的概念,但到目前为止,我从未见过它的用法。有人能给我解释一下java中必须使用IdentiyHashMap的实际用途或一些实际情况吗。有时您需要类似hashmap的行为(将数据与键关联),但键必须指向对象的特定副本,而不是对象的值。这就是IdentityHashMap为您所做的 例如,我在XSLT编译器中使用它来跟踪必须与解析树中的特定节点关联的瞬态上下文信息。树中的其他地方可能有一个节点具有相同的值,因此将具有相同的hashcode,并将其比较为相

我知道java中IdentityHashMap的概念,但到目前为止,我从未见过它的用法。有人能给我解释一下java中必须使用IdentiyHashMap的实际用途或一些实际情况吗。

有时您需要类似hashmap的行为(将数据与键关联),但键必须指向对象的特定副本,而不是对象的值。这就是IdentityHashMap为您所做的

例如,我在XSLT编译器中使用它来跟踪必须与解析树中的特定节点关联的瞬态上下文信息。树中的其他地方可能有一个节点具有相同的值,因此将具有相同的hashcode,并将其比较为相等,但它出现的上下文将不同,因此我需要能够单独查找它们


基本上:是的,在某些情况下它是有用的。您可能永远不会遇到它们,但它们非常常见,值得包含在库中,而不是强迫我们这些确实需要它的人每次都重新创建它。

请参阅对象图遍历过程中的可能,使用它可以确保您不会多次访问/处理堆上的同一对象。我之前访问过此链接,但仍然没有得到任何适当的使用。java中的每个对象都有特定的用途,我只想知道在哪种情况下我们必须使用IdentityHashMap。