1. HashMap的底层实现,HashSet的底层实现
HashMap在JDK1.8之前是数组+链表,JDK1.8之后 是数组+链表/红黑树。
HashSet的底层是HashMap。
2. HashMap的put方法的底层原理
1.根据key的hashCode计算出数组index。
2.落槽时
1.如果数组中节点为null,创建新的节点对象,把k,v存储在节点对象中,把节点对象存储在数组中。
2.如果数组的节点不为nu1l,判断节点的key与插入元素的key是否相等。
1.相等,直接用新的k, v覆盖原节点中的k,v。
2.不相等,判断此时节点是否为红黑树。
1.是红黑树,创建红黑树节点对象存储k,v,插入到红黑树中。
2.不是红黑树,创建链表节点对象存储k,v,插入到链表中,判断链表长度是否大于阈值8。
1.大于阈值8,链表转换为红黑树。
3.判断++size是否大于阈值,是就扩容。
3. HashMap的resize()扩容方法的底层原理
HashMap默认初始容量是