1.HashMap
类继承结构:
结构:数组+链表+红黑树
特点:线程不安全、无序
初始容量:16
初始负载因子:0.75
扩容:每次增加为原有容量的2倍
容量:2的n次幂
为什么线程不安全?
#1.在jdk1.7中,在多线程环境下,扩容时会造成环形链或数据丢失。
#2.在jdk1.8中,在多线程环境下,会发生数据覆盖的情况
2.Hashtable
类继承结构:
结构:数组+链表
特点:线程安全(对可能会引发线程安全的方法加锁)、重量级锁、无序
初始容量:11
初始负载因子:0.75
扩容:每次扩容后容量变为原有容量的2倍+1
3.TreeMap
类继承结构:
结构:红黑树
特点:线程不安全、有序
4.LinkedHashMap
类继承结构:
结构:继承自HashMap,在HashMap基础上增加了双向链表
特点:线程不安全、有序
初始容量:16
初始负载因子:0.75
扩容:每次增加为原有容量的2倍
容量:2的n次幂
5.ConcurrentHashMap
类继承结构:
结构:数组+链表+红黑树
特点:线程安全、无锁、无序
初始容量:16
初始负载因子:0.75