HashMap get方法在hm.get(hm)上抛出错误[关闭]
Posted
技术标签:
【中文标题】HashMap get方法在hm.get(hm)上抛出错误[关闭]【英文标题】:HashMap get method throwing error on hm.get(hm) [closed] 【发布时间】: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 ***Error
【问题讨论】:
请同时添加错误 你到底想在这里做什么? java.util.HashMap$EntryIterator.尝试将HashMap
作为密钥放在自身内部是个坏主意。
在hm.put(hm,hm)
之后,您的HashMap
包含一个其hashCode()
为hm.hashCode()
的键。 hm.hashCode()
是所有Map
条目中hashCode()
的函数。条目的hashCode()
是键和值的hashCode()
的函数(在您的情况下两者都是hm
)。因此,为了计算hm.hashCode()
,您必须计算hm.hashCode()
。这会导致无限递归。
调用hm.get(hm);
需要计算hm.hashCode()
,导致无限递归和***Error
。
【讨论】:
以上是关于HashMap get方法在hm.get(hm)上抛出错误[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在jsp页面怎样通过jstl标签调用java类中的方法?大虾们来救哈急哟。。。。