我正在编写一些Java代码,但发现无法做到这一点:

LinkedList<HashMap<String,Object>> errorManagement = new LinkedList<HashMap<String, Object>>();
HashMap<String,Object> i = new HashMap<String,Object>();
errorManagement.add(i.clone()); <-- impossible to add the hash map here


如果我想将哈希映射添加到链接列表中,我会遇到一些错误...

我通过这种方式发现了这一点:

HashMap<String,Object> tokenInfo = new HashMap<String,Object>();
LinkedList<Object> errorManagement = new LinkedList<Object>();
errorManagement.add(tokenInfo.clone()); <-- everything working like a charm !


我没有更多的错误了。
有人可以解释我为什么吗?有什么区别?

附言:我应该说,在有人问我之前,当我向链接列表添加任何内容时(第一个示例),该错误就引发了!

最佳答案

问题是clone()的返回类型:它是Object,而不是HashMap<String,Object>。这就是为什么第二个片段有效,而第一个不起作用的原因。

您可以通过构造函数构造哈希映射的副本来修复第一个代码片段:

errorManagement.add(new HashMap<String,Object>(i));

关于java - 对象的LinkedList和HashMap的LinkedList之间的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29393762/

10-09 20:02