集合类优美的源码品鉴
文章平均质量分 92
本专栏旨在品味jdk提供的相关集合类源码和其他一些优秀框架设计的集合类源码。
Binary Oracle
一名热爱开源和技术的Coder , 开源框架spring committer , golang开源网络库netpoll committer; (脱产备战25考研中,停更一年)
展开
-
图解LinkedHashMap原理
图解HashMap原理LinkedHashMap继承了HashMap,所以它们有很多相似的地方。LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的。HashMap无序;LinkedHashMap有序,可分为插入顺序和访问顺序两种。如果是访问顺序,那put和get操作已存在的Entry时,都会把Entry移动到双向链表的表尾(其实是先删除再插入)。LinkedHashMap存取数据,还是跟HashMap一样使用的Entry[]的方式,双向链表只是为了保证顺序。转载 2023-02-20 09:49:05 · 877 阅读 · 0 评论 -
ConcurrentHashMap设计思路
【代码】ConcurrentHashMap设计思路。原创 2023-02-11 12:03:41 · 645 阅读 · 0 评论 -
HashMap设计思想学习
通常情况下,除非是恶意伪造大量hash相同的元素,否则一般情况下链表长度最长也就是6左右,但是为了应对恶意伪造数据进行攻击的情况,引入了红黑树在链表长度达到指定阈值8时,进行替换;当然,如果此时数组长度没有大于等于64,那么会先尝试通过扩容数组大小来减少链表长度。扩容时,如果某个树的元素个数小于了6,那么红黑树会退化为链表,或者红黑树根节点的左右孩子或者左孙子中有一个为null,也会退化为链表。原创 2023-02-11 10:45:45 · 619 阅读 · 0 评论 -
ArrayList源码简析
ArrayList的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。ArrayList继承于 AbstractList,实现了 List这些接口。}.}.}是一个标志接口,表明实现这个这个接口的 List 集合是支持快速随机访问的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。ArrayList实现了 Cloneable接口。原创 2022-10-26 22:27:36 · 418 阅读 · 0 评论