hash地图的正确使用方法

hashmap的正确使用方法

近期发生太多关于集合类使用不当导致的bug, 在此记录下关于hashmap的信息。

 

https://gist.github.com/1081908

http://www.iteye.com/topic/962172

http://blog.sina.com.cn/s/blog_5465f7f20100tugf.html

http://blog.csdn.net/cleverpig2003/article/details/249844

 

问题列表:

1. hashmap.get() 导致cpu100%

2. hashmap.get()值不正确

……

 

剖析:

1. hashmap是非线程安全,所以也无须谈其数据是否正确。

2. 高并发下,hashmap的设计,可能会导致链表闭环。(可看hashmap的源码,hash冲突和动态扩容)

3. hashmap动态扩容的成本。大数据量的put,在没有设定容量的情况下,会有些问题.

 

建议:

1. 多看集合类的源码实现

2. 多看java.util.concurrent.*