`
wjboy49
  • 浏览: 275261 次
  • 性别: Icon_minigender_1
  • 来自: 湖南岳阳
社区版块
存档分类
最新评论

HashMap的一个问题

    博客分类:
  • java
 
阅读更多

当你用HashMap<String,Object>把数据保存的时候,其实隐藏了一个隐患。

 

这个隐患就是 当你把HashMap<String,Object>中的Object取出来后,并对该对象修改,你会发现Hashmap<String,Object>中的数据也被修改了。

 

这是为什么呢??

其实我们只要看下源代码就可以很轻松的找出:

132行: transient Entry[] table;用来保存KV对

674行:static class Entry<K,V> implements Map.Entry<K,V> 你们发现Entry居然是一个内部静态类。
现在问题找到了,因为保存到HashMap中的KV对 其实都是静态的。所以当你把HashMap<String,Object>中的Object取出来后,并对该对象修改,你会发现Hashmap<String,Object>中的数据也被修改了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics