java1.8的hashmap数据结构
枯叶mu 2019-05-13 08:39:42 1 hashmap 在java1.8以前使用的是数组+链表的形式,之后的版本加上了红黑树,解决hash值碰撞过多,性能下降问题。其中有两个阙值当满足时(TREEIFY_THRESHOLD链表数大于8,且MIN_TREEIFY_CAPACITY在hashmap中元素数量大于64)hashmap就会进行树的转化。
2 hashmap创建时容量会转化(根据方法tablesizefor)成最近的2n次方,扩容时根据默认扩容因子(默认0.75)进行两倍新建扩容。
3 hash值的运算,hash运算值是一个32位的int,进行16位移后与运算使高位和低位在16位中都有体现。