随笔分类 -  集合框架

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