HashMap结构认识
DEFAULT_INITIAL_CAPACITY
是HashMap的初始化容量,默认16
DEFAULT_LOAD_FACTOR
是HashMap的负载因子默认是0.75,这意味着当HashMap的键值对数量达到了容量的75%时,HashMap就会进行扩容,桶数组的长度将翻倍。
TREEIFY_THRESHOLD
是树化阈值,如果链表长度超过了8,HashMap 会将该链表转换为红黑树结构
因此我们可以这样简单理解:
HashMap就是一个默认长度16的桶数组,每个桶用来存放键值对。
添加键值对时,键值对的key与已有键值对的key发生了哈希冲突,它们会存放在同一个桶内,并且在桶内会维护一个链表来存储这些键值对,通常将新的键值对追加到链表的尾部。
当链表长度超过树化阈值8,则会将链表结构自动转换成红黑树结构,以提高在该桶中的查询性能。如果在红黑树中删除键值对后,链表长度降到了阈值以下(小于等于 8),HashMap 会自动将红黑树结构转换回链表结构。