1.结构
1.1hashmap结构
jdk1.7 数组和链表,jdk1.8 数组链表、红黑树
数组成员类型 jdk1.7 叫 Entry,jdk1.8 叫 Node,数组中的每个节点存的是 key 、hash 、value 、next。
hashmap使用拉链法解决hash冲突,但如果链表过长,会严重影响hashmap的查找性能。所以就有了红黑树。红黑树的时间复杂度是logn,链表的时间复杂度是n。
红黑树与链表的转换条件:
链表长度超过8 ,且数组长度达到了64,转红黑树,没到64,优先扩容。
1.2 concurrenthashmap结构
jdk1.7 segment数组和hashentry数组,锁是segment。jdk1.8 数组链表红黑树,锁是数组元素的级别。CAS机制,也就是锁住了头结点或者跟节点,就不会影响其他桶数组元素的读写。