
源码分析
文章平均质量分 91
Nice2cu_Code
立志成为一个前端、后端、测试全方位发展的程序员
展开
-
基于JDK11的 ArrayDeque 源码分析
ArrayDeque源码分析文章目录ArrayDeque源码分析一、基本介绍二、源码分析1. 成员属性2. 构造方法3. 入队方法3.1 addFirst(E e)方法3.2 addLast(E e)方法4. 扩容方法5. 出队方法5.1 pollFirst()方法5.2 pollLast()方法6. 栈方法6.1 push(E e)方法6.2 pop()方法一、基本介绍ArrayDeque是一种以数组方式实现的双端队列,它是非线程安全的双端队列是一种特殊的队列,它的两端都可以进出元素,故而得原创 2021-05-11 12:05:09 · 291 阅读 · 1 评论 -
PriorityQueue源码分析
阅读本文章之前推荐先阅读博主关于堆排序相关的内容,传送地址:八大排序算法大汇总 原理+图解+源码+复杂度分析PriorityQueue源码分析文章目录PriorityQueue源码分析一、堆结构二、基本介绍三、源码分析1. 主要属性2. 构造方法3. 入队方法3.1 add方法3.2 offer方法4. 扩容方法5. 出队方法5.1 remove()方法5.2 poll()方法6. 删除方法6.1 remove(Object o)方法7. 查看队首元素方法7.1 element()方法7.2 peek(原创 2021-05-10 09:37:49 · 266 阅读 · 0 评论 -
TreeSet源码分析
阅读本文章之前推荐先阅读博主的关于HashSet和TreeMap的源码分析,传送地址:HashSet源码分析,基于JDK1.8详细分析TreeMap源码分析,基于JDK1.8详细分析TreeSet源码分析文章目录TreeSet源码分析一、基本介绍二、源码分析1. 成员变量2. 构造方法3. 增删方法4. 其余方法三、TreeSet和LinkedHashSet的不同一、基本介绍TreeSet的作用是保存无重复的数据,底层是采用TreeMap(红黑树)实现的一种Set,所以它是有序的,迭代的时候原创 2021-05-07 12:19:02 · 319 阅读 · 1 评论 -
LinkedHashSet源码分析
LinkedHashSet源码分析阅读本文章之前一定要先阅读博主关于LinkedHashMap和HashSet的博客,传送地址:HashSet源码分析,基于JDK1.8详细分析LinkedHashMap源码分析,基于JDK1.8逐行分析文章目录LinkedHashSet源码分析一、基本介绍二、源码分析三、是否支持按访问顺序访问一、基本介绍LinkedHashSet底层使用LinkedHashMap存储元素LinkedHashSet是有序的,它是按照插入顺序排序的继承体系Li原创 2021-05-06 09:33:50 · 278 阅读 · 0 评论 -
HashSet源码分析
阅读本文章之前推荐先阅读博主关于HashMap的文章:HashMap源码分析 + 面试题HashSet源码分析文章目录HashSet源码分析一、基本介绍二、源码分析1. 成员变量2. 构造方法3. 添加方法4. 删除方法5. 查询方法6. 遍历方法三、总结一、基本介绍底层实现基于 HashMap,所以迭代时不能保证按照插入顺序或者其它顺序进行迭代add、remove、contanins、size 等方法的耗时性能,是不会随着数据量的增加而增加的,这个主要跟 HashMap 底层的数据结构原创 2021-04-30 08:23:12 · 313 阅读 · 1 评论 -
TreeMap源码分析
阅读本文章之前需要了解Comparator接口及Comparable接口的基本使用,推荐先阅读博主关于红黑树的讲解文章,传送地址:快速理解红黑树,从二叉排序树 → AVL树 → 红黑树的演变TreeMap源码分析文章目录TreeMap源码分析一、基本介绍二、源码分析1. 常见属性2. 内部类3. 构造方法4. get(Object key)方法5. put(K key, V value)方法6. 删除节点7. 总结一、基本介绍TreeMap使用红黑树存储元素,可以保证元素按key值的大小进行排序原创 2021-04-29 09:29:42 · 334 阅读 · 0 评论 -
LinkedHashMap源码分析
阅读本文章之前推荐先阅读博主的以下两篇文章:HashMap源码分析 + 面试题LinkedList源码分析,基于JDK1.8逐行分析LinkedHashMap源码分析文章目录LinkedHashMap源码分析一、整体架构1. 基本介绍2. 存储结构图二、源码分析1. 成员属性2. 内部类3. 构造方法4. 增加方法5. 查询方法5.1 get方法5.2 getOrDefault方法6. 删除方法7. 遍历方法一、整体架构1. 基本介绍继承体系LinkedHashMap = Link原创 2021-04-27 07:32:41 · 371 阅读 · 0 评论 -
HashMap线程不安全的原因,JDK1.7与JDK1.8分类讨论
阅读本文章之前需要了解HashMap基本原理,推荐阅读博主关于HashMap源码的逐行分析文章,传送地址:HashMap源码分析 + 面试题HashMap线程不安全的原因文章目录HashMap线程不安全的原因一、JDK1.7中HashMap线程不安全的原因1. 头插法介绍2. 扩容机制2.1 单线程的扩容2.2 多线程的扩容(环形链表)3. 使用头插法的原因二、JDK1.8中HashMap线程不安全的原因JDK1.8解决扩容成环问题的方式一、JDK1.7中HashMap线程不安全的原因在JDK1.7原创 2021-04-26 09:02:55 · 615 阅读 · 0 评论 -
HashMap源码分析
阅读本文章之前推荐先阅读博主关于红黑树的文章,讲述了从二叉排序树 → AVL树 → 红黑树的演变,传送地址:快速理解红黑树HashMap源码分析 + 面试题文章目录HashMap源码分析 + 面试题一、哈希介绍二、HashMap集合简介三、HashMap存储数据的过程3.1 过程分析3.2 常见面试题四、HashMap继承关系五、HashMap集合成员5.1 成员变量5.2 构造方法5.3 成员方法5.3.1 增加方法5.3.2 红黑树新增节点过程5.3.3 树化方法5.3.4 扩容方法5.3.5 红黑原创 2021-04-24 08:46:02 · 565 阅读 · 0 评论 -
LinkedList源码分析
博主关于ArrayList源码分析的文章,传送地址:ArrayList源码分析,基于JDK1.8逐行分析LinkedList文章目录LinkedList一、基本介绍1. 继承体系2. 整体架构二、源码分析1. 主要属性2. 主要内部类3. 主要构造方法4. 添加元素方法4.1 从尾部添加4.2 从头部添加4.3 从链表中间添加5. 删除元素方法5.1 从尾部删除5.2 从头部删除5.3 从链表中间删除6. 其余方法6.1 弹出元素方法6.2 当作栈来使用三、方法对比四、迭代器4.1 迭代器属性4.2 迭原创 2021-04-23 13:05:40 · 294 阅读 · 0 评论 -
Vector源码分析
阅读本章之前推荐先阅读博主的ArrayList源码分析,更容易理解,传送地址:ArrayList源码分析,基于JDK1.8逐行分析文章目录Vector源码分析一、Vector与ArrayList对比二、Vector基本介绍1. 继承关系图2. 成员属性3. 构造方法三、构造方法源码分析四、添加、扩容方法源码分析Vector源码分析注意:Vector与ArrayList底层几乎一致,故只讲述重点的地方一、Vector与ArrayList对比线程安全方面Vector多数方法使用synchroni原创 2021-04-22 12:06:16 · 290 阅读 · 0 评论 -
ArrayList源码分析
文章目录ArrayList源码分析一、整体架构1. 结构图2. 使用时的注意事项3. 基本过程分析二、源码分析1. 成员属性2. 构造函数2.1 无参数初始化2.2 指定大小初始化2.3 指定初始数据初始化3. 成员方法3.1 add(E e)方法3.2 remove(Object o)方法3.3 get(int index)方法3.4 retainAll(Collection c)方法3.5 removeAll(Collection c)方法ArrayList源码分析一、整体架构ArrayLis原创 2021-04-18 15:57:44 · 484 阅读 · 3 评论