比较HashMap,HashTable,ConcurrentHashMap
HashMap
HashMap底层实现方式:
JDK1.8之前是采用数组+链表,当产生哈希碰撞时,会采用头插法往链表中添加节点,在高并发的情况下,当HashMap扩容时可能会产生环形链表,导致get的时候陷入死循环。JDK1.8是采用数组+红黑树,当产生哈希碰撞时,改用尾插法插入,当节点个数 > 8,链表会转化为红黑树,当结点个数 < 6,红黑树会转化为链表。
默认容量为16,载容因子为0.75。
HashMap是线程不安全的。