
jdk源码分析
jdk源码分析
hestyle
戎码一生!
展开
-
Java字符串类之String、StringBuilder、StringBuffer源码分析与总结(你知道三者的区别?)
前面分析完Java中常见容器的源码,此篇博客来分析下Java字符串相关的常用的三个类String、StringBuilder、StringBuffer。 相信看过我前面的Java容器源码分析博客的小伙伴会发现一个规律,我一般分析某个类的源码都是从属性、构造器(初始化方法)、常用的API三个方向下手,并不会也没有必要从源码的第一行读到最后一行。在此篇博客分析这三个类也同样使用这种技巧,如果你...原创 2020-04-29 22:35:15 · 669 阅读 · 0 评论 -
Java常用容器JDK源码分析总结(震惊,某博主竟然分析完了List、Queue、Map、Set接口的主要实现类)
前些天花了12篇博客,分析了Java常用的容器的源码,主要是List、Queue、Map、Set等接口的实现类。此篇博客将对这些容器进行一个总结,但不会涉及源码,如果需要了解更多的细节,可以通过文中的链接阅读。Java常用容器JDK源码分析总结目录一、Java`容器`概述二、`List`容器1、`ArrayList`容器2、`Vector`容器3、`LinkedList`容器三、`Queue...原创 2020-04-27 16:49:45 · 810 阅读 · 4 评论 -
Java容器之PriorityQueue源码分析(附堆的调整图解)
PriorityQueue容器,也就是我们日常所称的优先队列,也有小伙伴称堆。优先队列的作用是将队列中的元素最小值放到堆顶(默认小顶堆,最小的元素在顶端,你也可以修改comparator,使之变成大顶堆,最大的元素在顶端)。每当我们插入、删除元素,都是从堆顶进行,优先队列会自动重新调整堆,将最小的元素值调整到堆顶。 本篇博客将从源码的角度并结合相应的图解,对Java中的PriorityQu...原创 2020-04-27 11:05:52 · 1219 阅读 · 0 评论 -
Java容器之ArrayDeque源码分析(你知道ArrayDeque维护循环数组的原理吗?)
在上一篇博客 Java容器之LinkedList源码分析(LinkedList到底是单链表还是双链表?) 分析了LinkedList容器的源码,LinkedList实现了Deque接口,所以它不但是一个List容器,而且还是一个双端队列容器,并且是基于双链表实现。在此篇博客,将分析基于(循环)数组实现的双端队列容器——ArrayDeque。注明:以下源码分析都是基于jdk 1.8.0_22...原创 2020-04-26 11:09:54 · 723 阅读 · 0 评论 -
Java容器之LinkedList源码分析(LinkedList到底是单链表还是双链表?)
前面在分析ArrayList、Vector容器的源码时,发现的底层实现原理都是维护一个数组,并且自动调整数组的大小(扩容、缩小),随机查找效率高,但是插入、删除操作效率低。在此篇博客中,博主将带领各位小伙伴也看看LinkedList容器的实现原理,它又有什么优势呢,它到底是单链表还是双链表实现呢?注明:以下源码分析都是基于jdk 1.8.0_221版本Java容器之LinkedList源...原创 2020-04-25 23:03:57 · 1360 阅读 · 0 评论 -
Java容器之Vector源码分析(Vector容器为啥线程安全呢?)
在上一篇博客 Java容器之ArrayList源码分析(这应该是Java中最简单的容器吧) 从源码的角度分析了ArrayList容器,现在我们看下Vector容器又是什么。注明:以下源码分析都是基于jdk 1.8.0_221版本Java容器之Vector源码分析目录一、`Vector`容器概述二、`Vector`类中主要属性三、`Vector`类的构造器四、`查找`相关方法1、`get`...原创 2020-04-25 16:06:32 · 1294 阅读 · 0 评论 -
Java容器之ArrayList源码分析(这应该是Java中最简单的容器吧)
前面已经分析完Java的Map、Set容器源码,还剩List相关的容器,此篇博客将分析List接口的实现类之一ArrayList容器的源码实现。注明:以下源码分析都是基于jdk 1.8.0_221版本Java容器之ArrayList源码分析目录一、`ArrayList`容器概述二、`ArrayList`类主要属性三、`ArrayList`类构造器四、`查找`相关方法1、`get`方法2、...原创 2020-04-25 10:32:18 · 629 阅读 · 0 评论 -
Java容器之HashSet、LinkedHashSet、TreeSet源码分析(不敢称东半球最好,只称东半球最好理解)
前面分析了Java中的常见五大map容器,Java中的Set容器是对Map容器的封装,今天就结合源码分析一下Java中常见的三大Set容器。注明:以下源码分析都是基于jdk 1.8.0_221温馨提示:\color{red}温馨提示:温馨提示:请先阅读一下我之前写的HashMap、LinkedHashMap、TreeMap源码分析博客,Java中的Set就是把Map改了个名字,这里不会再...原创 2020-04-24 11:44:37 · 602 阅读 · 0 评论 -
Java中的常见五种map容器源码分析总结(HashMap、Hashtable、ConcurrentHashMap、LinkedHashMap、TreeMap)
断断续续写了半个月,今天终于把TreeMap容器中的红黑树搞定了,现在来水一篇又快又短的Java Map容器总结博客 ????????。注明:本篇博客不会涉及容器的源码什么的,主要是总结各个map容器的底层实现特点、主要运用场景。如果你需要详细了解更多关于Java中的map容器实现的细节,文末会提供我前面写的源码分析的博客链接,欢迎阅读。Java中的常见五种map容器源码分析总结目录一、`Java`中...原创 2020-04-23 22:08:21 · 1226 阅读 · 0 评论 -
Java容器之TreeMap源码分析(附红黑树调整图解,全网最详细、图解最全,不服来辩)
在之前分析HashMap、ConcurrentHashMap容器的源码实现时,反复提及到JDK 1.8的版本中,HashMap、ConcurrentHashMap两个容器都引入了红黑树来解决hash冲突问题(在之前的版本只有链表,现在hash桶的实现可有链表、红黑树进行转换),但是JDK中的红黑树到底是如何实现的呢?Java容器之TreeMap源码分析目录一、`TreeMap`容器概述二、`...原创 2020-04-23 16:45:42 · 730 阅读 · 0 评论 -
Java容器之LinkedHashMap源码分析(看看确定不点进来?进来真不点?)
前面几篇博客Java容器之Hashtable源码分析、Java容器之HashMap源码分析分别分析了HashMap、Hashtable的源码,此篇博客我们分析一下LinkedHashMap容器,看看它又有什么花样。注明:以下源码分析都是基于jdk 1.8.0_221LinkedHashMap源码分析目录一、`LinkedHashMap`容器概述(==一图以蔽之==)1、`LinkedHa...原创 2020-04-16 17:49:42 · 1359 阅读 · 4 评论 -
Java容器之Hashtable源码分析(关于Hashtable的这些细节你可能还不知道)
在上一篇博客 Java容器之HashMap源码分析(妈妈再也不用担心我不懂HashMap了) 从源码层次分析了HashMap容器的底层实现,在本篇博客将继续从源码层次分析Hashtable的底层实现。 注明:以下源码分析都是基于jdk 1.8.0_221版本Hashtable源码分析目录一、`Hashtable`容器概述(==一图以蔽之==)二、`Hashtable`类的属性三、`Ha...原创 2020-04-11 12:02:42 · 531 阅读 · 3 评论 -
Java容器之HashMap源码分析(妈妈再也不用担心我不懂HashMap了)
最近面试被问HashMap容器的实现原理,答的一塌糊涂。。。虽说一直念叨着说要看看Java容器的源码,但总是被耽搁了,今天终于静下心来看了????♂️。 注明:以下源码分析都是基于jdk 1.8.0_221版本HashMap源码分析目录一、`HashMap`概述(==一图以蔽之==)二、`HashMap`类的属性1、`HashMap`类静态属性2、`HashMap`非类静态属性三、`Has...原创 2020-04-10 12:22:01 · 846 阅读 · 1 评论 -
Java容器之ConcurrentHashMap源码分析(JDK 1.7与JDK 1.8对比)
在前面两篇博客 Java容器之HashMap源码分析、Java容器之Hashtable源码分析分别对JDK1.8中的HashMap、Hashtable的源码进行一些分析,在本篇博客将对ConcurrentHashMap容器的源码进行一些分析。申明:在前两篇博客介绍了两个容器的增、删、改、查相关的API,并且给源码加上了中文注释,在本篇博客将只介绍一些关键的API,比如hash值的计算,put...原创 2020-04-14 09:39:22 · 628 阅读 · 0 评论