【发布时间】:2019-07-08 12:35:49
【问题描述】:
您能解释一下以下场景吗?
HashMap<HashMap,HashMap> hm=new HashMap<>();
hm.put(hm,hm);
hm.get(hm); // ----> On commenting this line, I get no error.
// If I uncomment it, I am getting StackOverflowError
【问题讨论】:
-
请同时添加错误
-
你到底想在这里做什么?
-
java.util.HashMap$EntryIterator.
(Unknown Source) at java.util.HashMap$EntrySet.iterator(Unknown Source) 处的线程“main”java.lang.StackOverflowError 异常java.util.AbstractMap.hashCode(Unknown Source) at java.util.Objects.hashCode(Unknown Source) at java.util.HashMap$Node.hashCode(Unknown Source) -
请将错误和堆栈跟踪(或只是其中的一小部分)粘贴到问题文本中并格式化为代码以提高可读性。不要指望读者跟随链接并将文本视为图像。谢谢。
-
“注意:如果将可变对象用作映射键,则必须非常小心。如果对象的值以影响等于比较的方式更改,而对象是映射中的键,则不指定映射的行为。这种禁止的一个特殊情况是不允许地图包含自己作为键。” from the docs
标签: java hashmap stack-overflow