1.谈谈Hashmap的扩容原理
数组初始16,
数组可以增大,16>32>64,2的幂次方进行扩容,
每个节点对应的hash都会先对数组数量进行取余,
首先当数组长度大于64,链表长度大于8,链表转为红黑树,不大于64,对数组进行扩容。
链表和红黑树转换,低于6转化为链表,高于8转换红黑树,
2.聊聊Hashmap的底层结构区分1.7和1.8
1.7: 数组 + 单向链表
1.8: 数组 + 单向链表 + 红黑树
3.聊聊Concurrent(抗蠢特)HashMap怎么实现线程安全
4.聊聊arraylist的初始容量和扩容机制
初始容量:10
扩容机制:
ArrayList是采取延迟分配对象数组大小空间的,当第一次添加元素时才会分配10个对象空间,当添加第11个元素的时候,会扩容1.5倍,当添加到16个元素的时候扩容为15*1.5=22,以此类推。 ArrayList每次扩容都是通过Arrays.copyof (elementData, newCapacity)来实现的。