1.HashMap

类继承结构:

Java集合框架之Map家族_红黑树

结构:数组+链表+红黑树

特点:线程不安全、无序

初始容量:16

初始负载因子:0.75

扩容:每次增加为原有容量的2倍

容量:2的n次幂

为什么线程不安全?

#1.在jdk1.7中,在多线程环境下,扩容时会造成环形链或数据丢失。

#2.在jdk1.8中,在多线程环境下,会发生数据覆盖的情况

2.Hashtable

类继承结构:

Java集合框架之Map家族_线程安全_02

结构:数组+链表

特点:线程安全(对可能会引发线程安全的方法加锁)、重量级锁、无序

初始容量:11

初始负载因子:0.75

扩容:每次扩容后容量变为原有容量的2倍+1

3.TreeMap

类继承结构:

Java集合框架之Map家族_线程安全_03

结构:红黑树

特点:线程不安全、有序

4.LinkedHashMap

类继承结构:

Java集合框架之Map家族_红黑树_04

结构:继承自HashMap,在HashMap基础上增加了双向链表

特点:线程不安全、有序

初始容量:16

初始负载因子:0.75

扩容:每次增加为原有容量的2倍

容量:2的n次幂

5.ConcurrentHashMap

类继承结构:

Java集合框架之Map家族_红黑树_05

结构:数组+链表+红黑树

特点:线程安全、无锁、无序

初始容量:16

初始负载因子:0.75