
JDK 系列 -- 集合类
JDK 集合类源码分析专栏
奋斗企鹅CopperSun
这个作者很懒,什么都没留下…
展开
-
【JDK源码分析系列】ArrayList源码分析
【JDK源码分析系列】ArrayList源码分析【1】ArrayList源码MCL视图ArrayList的MCL视图如下图所示,包括内部类的MCL视图;【2】ArrayList源码分析相关知识点总结 /** * 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持; * 即用transient关键字标记的成员变量不参与序列化过程;...原创 2019-07-11 18:26:53 · 309 阅读 · 0 评论 -
【JDK源码分析系列】LinkedList 源码分析
【JDK源码分析系列】LinkedList 源码分析【1】LinkedList 源码MCL视图LinkedList 的 MCL 视图如下图所示,包括内部类的MCL视图;【2】LinkedList 源码分析相关知识点总结 /** * superClone 方法,克隆 LinkedList 的父类; * 单独使用 superClone 方法可...原创 2019-07-18 17:46:00 · 347 阅读 · 0 评论 -
【JDK源码分析系列】HashMap 源码分析 -- 增、删、查操作
【JDK源码分析系列】HashMap 源码分析【0】HashMap 整体架构【1】HashMap 新增数据流程1. 空数组有无初始化,没有的话初始化2. 如果通过 key 的 hash 能够直接找到值, 跳转到 6,否则到 33. 如果 hash 冲突,两种解决方案:链表 or 红黑树4. 如果是链表,递归循环,把新元素追加到队尾5. 如果是红黑树,调用红黑树新增的方法6. 通过 2、4、5 将新元素追加成功,再根据 onlyIfAbsent 判断是否需要覆盖7. 判断是否需原创 2020-06-15 21:12:30 · 268 阅读 · 0 评论 -
【JDK源码分析系列】HashMap 源码分析 -- 红黑树
【JDK源码分析系列】HashMap 源码分析 -- 红黑树【1】红黑树定义和性质红黑树是一种含有红黑结点并能自平衡的二叉查找树它必须满足下面性质性质1:每个节点要么是黑色,要么是红色性质2:根节点是黑色性质3:每个叶子节点(NIL)是黑色性质4:每个红色结点的两个子结点一定都是黑色性质5:任意一结点到每个叶子结点的路径都包含数量相同的黑结点性质5.1:如果一个结点存在黑子结点,那么该结点肯定有两个子结点红黑树示意图与节点名称约定【2】红黑树的简单操作左旋:以某个结点作原创 2020-06-15 19:29:42 · 334 阅读 · 0 评论 -
【JDK源码分析系列】ConcurrentHashMap 源码分析 -- 基本结构及其线程安全体现
【JDK源码分析系列】ConcurrentHashMap 源码分析 -- 基本结构及其线程安全体现【1】Node 基本节点/普通节点// Node:基本节点/普通节点// 在链表形式保存才使用这种节点,它存储实际的数据// val 和 next 被 volatile 修饰// Map.Entry是个接口static class Node<K,V> implements Map.Entry<K,V> { final int hash;//当前node的hash原创 2020-06-16 14:55:35 · 267 阅读 · 0 评论 -
【JDK源码分析系列】ConcurrentHashMap 源码分析 -- 增、删、查操作
【JDK源码分析系列】ConcurrentHashMap 源码分析-- 增、删、查操作【0】ConcurrentHashMap 整体架构构成说明采用transient volatile HashEntry<K,V>[] table保存数据,采用table数组元素作为锁,从而实现了对每一行数据进行加锁,并发控制使用Synchronized和CAS来操作采用table数组+单向链表+红黑树的结构ConcurrentHashMap和HashMap比较相同之处1. 数...原创 2020-06-16 14:27:53 · 292 阅读 · 0 评论 -
【JDK源码分析系列】ConcurrentHashMap 与 HashMap 扩容知识点总结
【JDK源码分析系列】ConcurrentHashMap 与 HashMap 扩容知识点总结【1】HashMap 扩容机制下图为 16 扩充为 32 的 resize 示意图HashMap 源码//初始化或者双倍扩容,如果是空的,按照初始容量进行初始化//扩容是双倍扩容,要么还在原来索引位置,要么在扩容的空间上final Node<K,V>[] resize() { // 把之前的数组变成 oldTab Node<K,V>[] oldTa原创 2020-06-16 17:42:54 · 294 阅读 · 0 评论 -
【JDK源码分析系列】PriorityQueue源码分析
【JDK源码分析系列】PriorityQueue源码分析【1】PriorityQueue 继承体系图示致谢本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。原创 2020-09-27 14:29:14 · 225 阅读 · 0 评论 -
【JDK源码分析系列】DelayQueue源码分析
【JDK源码分析系列】DelayQueue 源码分析【1】DelayQueue 继承体系图示致谢本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。原创 2020-09-27 15:17:32 · 191 阅读 · 0 评论 -
【JDK源码分析系列】ArrayBlockingQueue源码分析
【JDK源码分析系列】ArrayBlockingQueue源码分析【1】ArrayBlockingQueue 继承体系图示致谢本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。...原创 2020-09-27 14:27:52 · 326 阅读 · 0 评论 -
【JDK源码分析系列】LinkedBlockingQueue源码分析
【JDK源码分析系列】LinkedBlockingQueue源码分析【1】LinkedBlockingQueue 继承体系图示致谢本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。...原创 2020-09-27 14:28:26 · 190 阅读 · 0 评论 -
【JDK源码分析系列】SynchronousQueue源码分析
【JDK源码分析系列】SynchronousQueue 源码分析【1】SynchronousQueue 继承体系图示致谢本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。...原创 2020-09-28 09:59:52 · 200 阅读 · 0 评论