Java源码解析之HashMap的put、resize方法详解
一、HashMap 简介HashMap 底层采用哈希表结构 数组加链表加红黑树实现,允许储存null键和null值数组优点:通过数组下标可以快速实现对数组元素的访问,效率高链表优点:插入或删除数据不需要移动元素,只需要修改节点引用效率高二、源码分析2.1 继承和实现继承AbstractMap实现了map接口 cloneable接口和可序列化接口2.2 属性loadFactor决定数组何时进行扩容,而且为什么是0.75f它也叫扩容因子 比如数组长度为32,所以数组扩容阈值为32*0.75=24当数组中数据个数为24时数组进行扩容,数组容量在创建的时候就确定,扩容时重新创建一个指定容量的数组,然后讲旧数组的值复制到新数组中,扩容过程非常耗时,所以0.75时基于容量和性能之间平衡的结果。
用户评论