集合类
文章平均质量分 65
千秋不知岁
这个作者很懒,什么都没留下…
展开
-
hashMap,Put函数详细过程
前言 照着源码重新认认真真的流程过了一遍,主要说的是链表的插入过程,红黑树的过程没有讲,权当自己复习所用。 hashMap PUT 函数详细过程 在jdk1.8中,一进来只有一句话 return putVal(hash(key), key, value, false, true)。 hash(key)函数就是 key为空则返回0,否则是key.hashCode ^ key.hashCode >>> 16 hash值计算完了就进入到putVal中。 第一个if是判断table == nul原创 2021-12-20 17:20:25 · 447 阅读 · 0 评论 -
HashMap put(),resize()解析
HashMap put(),resize()解析 查看的源码是jdk1.8版本,这里对jdk1.7的HashMap不详细讨论 map常量讲解: 首先,先看看HashMap定义的常量 前三个分别是默认容量=16,最大容量=2^30,默认的负载因子=0.75。当map里的节点大小大于总容量*负载因子时,会进行扩容。 后三个分别是树化长度=8,退化长度=6,以及最小的树化容量=64。jdk1.8中,HashMap的实现是数组加链表加红黑树,当链表长度大于等于8,进行树化,但是首先还要Map的容量大于最小树化容原创 2021-11-11 21:15:18 · 416 阅读 · 0 评论 -
ArrayList扩容解析
ArrayList扩容 查看的ArrayList源码是JDK1.8版本 首先,对于ArrayList扩容,当调用无参构造new一个ArrayList时,此时size=0,数组为空。如果指定了数组大小的构造函数,或者是指定了collection元素的列表,这两个构造函数,初始值size就是自定义的了。 然后当执行add方法时 可以看到,一定会先执行ensureCapacityInternal方法,参数叫做minCapacity(最小容量)=size+1。 而ensureCapacityInternal()还原创 2021-11-09 11:29:21 · 193 阅读 · 0 评论