随笔分类 - 集合框架
JDK集合框架学习记录和总结
摘要:ThreadLocal类 该类主要用于不同线程存储自己的线程本地变量。本文先通过一个示例简单介绍该类的使用方法,然后从ThreadLocal类的初始化、存储结构、增删数据和hash值计算等几个方面,分析对应源码。采用的版本为jdk1.8。 ThreadLocal-使用方法 ThreadLocal对象
阅读全文
摘要:本文将从ArrayList类的存储结构、初始化、增删数据、扩容处理以及元素迭代等几个方面,分析该类常用方法的源码。 数据存储设计 该类用一个Object类型的数组存储容器的元素。对于容量为空的情况,提供了两个成员变量来表示。 // 用于存储容器元素的数组,数组长度不小于容器内元素个数 transie
阅读全文
摘要:本文将分析put(),resize(),get()和remove()方法的源码 putval()方法 大致步骤:计算key的hash值;根据hash值计算数组下标;判断下标处是否有节点,无节点则直接插入,有则根据是链表还是红黑树进行对应操作。 这里需要注意的是如果插入链表后长度达到了8,且table
阅读全文
摘要:本文将从以下方面结合源码进行分析:自动扩容、初始化与懒加载、哈希计算、位运算(默认采用JDK1.8)。 自动扩容 扩容操作发生在putVal最后部分,在增加元素后才判断是否需要扩容,如果超过阈值,会自动扩容。 这里扩容都是<<1翻倍进行扩容的。 扩容时节点数组进行数据转移的三种情况: 节点的元素无后
阅读全文

浙公网安备 33010602011771号