如果值本身是Hashmap,HashMap如何处理更新的<key,value>?

Nil*_*ber 0 java jvm memory-leaks out-of-memory

当我们<key,value>在HashMap中放入一个键时,如果该键已经存在于HashMap中,那么该值将被替换.但是如果一个键值本身就是一个HashMap,那么它会被HashMap取代吗?

JB *_*zet 8

是的,它会被取代.请记住,Map仅存储对其他对象的引用.

您在地图中引用了HashMap,并且该地图保留了对此HashMap的引用.

如果使用相同的键放置对另一个HashMap的引用,则对第一个放置HashMap的引用将替换为对新HashMap的引用.对象的类型无关紧要.它总是以相同的方式工作.

  • 使用真实代码编辑您的问题.但是`m.put(this,this)`,其中`this`是一个可变的HashMap,显然会引起问题.键应该是不可变的.如果他们的hashhCode在存储在HashMap中时发生更改,则HashMap将无法正常工作. (2认同)