并发容器
ConcurrentHashMap: synchronizedMap是支持并发的HashMap,使用了分段锁机制,效率比同步的HashMap更高。所谓分段锁:是在HashMap上分段加锁,这样当多个线程访问不同数据段就不会发生锁竞争。
ConcurrentSkipListMap:支持并发的排序映射表,SkipList是跳表:Skip list让已排序的数据分布在多层链表中
HashMap的性能参数,如图为hashMap的存储结构:数组+链表,当Hash值冲突时就用链表存储冲突的元素。
构建HashMap时的二个参数:容量(capacity),负载因子(loadfactor)。容量是hansmap的初始大小,当hashmap存储的元素接近容量大小时发生冲突的概率就会增加,性能就会下降。这时就需要扩容(resize),扩容之后就要重新rehash,重新计算元素的存储位置。
LinkedHashMap的存储结构:LinkedHashMap继承自HashMap,那么自然有HashMap一样的基本的存储结构,但阅读源码发现LinkedHashMap还有一个Header指针,这是一个存放访问次序的双向链表。构造LinkedHashMap时要比HashMap多一个Boolean型的accessOrder参数,该参数为true时,访问过某一个元素后,该元素就会被放在列表的最后。
LinkedHashMap的存储结构:
参考资料:
http://www.ibm.com/developerworks/cn/java/j-jtp04186/
http://blog.csdn.net/guangcigeyun/article/details/8278349
http://blog.csdn.net/guangcigeyun/article/details/8278349