自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hestyle的博客

hestyle便涨红了脸,额上的青筋条条绽出,争辩道,“Ctrl+C+V不能算抄…Ctrl+C+V!…程序员的事,能算抄么?”接连便是难懂的话,什么“移花接木”,什么“借鉴”之类,引得众人都哄笑起来。

  • 博客(18)
  • 收藏
  • 关注

原创 Java容器之PriorityQueue源码分析(附堆的调整图解)

  PriorityQueue容器,也就是我们日常所称的优先队列,也有小伙伴称堆。优先队列的作用是将队列中的元素最小值放到堆顶(默认小顶堆,最小的元素在顶端,你也可以修改comparator,使之变成大顶堆,最大的元素在顶端)。每当我们插入、删除元素,都是从堆顶进行,优先队列会自动重新调整堆,将最小的元素值调整到堆顶。   本篇博客将从源码的角度并结合相应的图解,对Java中的PriorityQu...

2020-04-27 11:05:52 1093

原创 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 569

原创 Java中的常见五种map容器源码分析总结(HashMap、Hashtable、ConcurrentHashMap、LinkedHashMap、TreeMap)

  断断续续写了半个月,今天终于把TreeMap容器中的红黑树搞定了,现在来水一篇又快又短的Java Map容器总结博客 ????????。 注明:本篇博客不会涉及容器的源码什么的,主要是总结各个map容器的底层实现特点、主要运用场景。如果你需要详细了解更多关于Java中的map容器实现的细节,文末会提供我前面写的源码分析的博客链接,欢迎阅读。 Java中的常见五种map容器源码分析总结目录一、`Java`中...

2020-04-23 22:08:21 1174

原创 Java容器之TreeMap源码分析(附红黑树调整图解,全网最详细、图解最全,不服来辩)

  在之前分析HashMap、ConcurrentHashMap容器的源码实现时,反复提及到JDK 1.8的版本中,HashMap、ConcurrentHashMap两个容器都引入了红黑树来解决hash冲突问题(在之前的版本只有链表,现在hash桶的实现可有链表、红黑树进行转换),但是JDK中的红黑树到底是如何实现的呢? Java容器之TreeMap源码分析目录一、`TreeMap`容器概述二、`...

2020-04-23 16:45:42 677

原创 数据结构之红黑树(还在为看不懂红黑树而烦恼吗?别再翻了,此篇足矣~)

  红黑树,非常经典的数据结构,主要用于一些容器中,比如C++语言中的map、Java语言中的TreeMap(后面会写源码分析博客)。红黑树能保持高效的查找,一般取时间复杂度为O(log2n),由于高效,这个结构也比较复杂,所以很多人(包括我自己)都一直搞不懂红黑树到底是怎么插入、删除节点的。此篇博客,博主将图文并茂的一层一层揭开红黑树神秘面纱。   温馨提示:\color{red}温馨提示:温馨...

2020-04-18 17:31:23 1445

原创 Java容器之LinkedHashMap源码分析(看看确定不点进来?进来真不点?)

  前面几篇博客Java容器之Hashtable源码分析、Java容器之HashMap源码分析分别分析了HashMap、Hashtable的源码,此篇博客我们分析一下LinkedHashMap容器,看看它又有什么花样。 注明:以下源码分析都是基于jdk 1.8.0_221 LinkedHashMap源码分析目录一、`LinkedHashMap`容器概述(==一图以蔽之==)1、`LinkedHa...

2020-04-16 17:49:42 1318 4

原创 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 596

原创 Java容器之Hashtable源码分析(关于Hashtable的这些细节你可能还不知道)

  在上一篇博客 Java容器之HashMap源码分析(妈妈再也不用担心我不懂HashMap了) 从源码层次分析了HashMap容器的底层实现,在本篇博客将继续从源码层次分析Hashtable的底层实现。   注明:以下源码分析都是基于jdk 1.8.0_221版本 Hashtable源码分析目录一、`Hashtable`容器概述(==一图以蔽之==)二、`Hashtable`类的属性三、`Ha...

2020-04-11 12:02:42 508 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 820 1

原创 数据结构之二叉树、AVL树、红黑树、Trie树、B树、B+树、B*树浅析

  树,作为五大经典数据结构之一,有许多运用场景,比如MySQL数据库的B+树(数据结构的重要性不用强调了吧)。下面将对二叉树、红黑树、B树、B+树等树结构进行一些概念区分与总结,此篇博客适合新手、有一定数据结构基础的小伙伴。 一、树的划分   根据子节点的个数可以划分成N叉树(一般N ≥ 2),N叉树拥有的特征是每个节点至多有N个子节点。 比如,N = 2时,称为二叉树,每个节点至多只有2个节点...

2020-04-07 09:34:30 1243 4

原创 Java字符串类之String、StringBuilder、StringBuffer源码分析与总结(你知道三者的区别?)

  前面分析完Java中常见容器的源码,此篇博客来分析下Java字符串相关的常用的三个类String、StringBuilder、StringBuffer。   相信看过我前面的Java容器源码分析博客的小伙伴会发现一个规律,我一般分析某个类的源码都是从属性、构造器(初始化方法)、常用的API三个方向下手,并不会也没有必要从源码的第一行读到最后一行。在此篇博客分析这三个类也同样使用这种技巧,如果你...

2020-04-29 22:35:15 590

原创 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 747 4

原创 数据结构之堆(我猜,关于堆的这些维护细节,你肯定不清楚,不信你来看!)

  在前面分析了二叉搜索树、红黑树等众多树结构,今天博主给大家换个口味,深入分析一下堆的实现原理与维护规则。(堆其实与二叉树有点相似) 数据结构之堆原理分析目录一、`堆`的概述1、什么是`堆`2、`堆`的划分3、`堆`的作用二、`堆`的底层实现三、`堆`的调整四、总结 一、堆的概述 1、什么是堆   堆,在日常生活中是一个量词,比如:一堆木头,下面这张图就是一堆木头,大家注意它的摆放规则,成金字塔...

2020-04-26 22:12:52 1272 1

原创 Java容器之ArrayDeque源码分析(你知道ArrayDeque维护循环数组的原理吗?)

  在上一篇博客 Java容器之LinkedList源码分析(LinkedList到底是单链表还是双链表?) 分析了LinkedList容器的源码,LinkedList实现了Deque接口,所以它不但是一个List容器,而且还是一个双端队列容器,并且是基于双链表实现。在此篇博客,将分析基于(循环)数组实现的双端队列容器——ArrayDeque。 注明:以下源码分析都是基于jdk 1.8.0_22...

2020-04-26 11:09:54 658

原创 Java容器之LinkedList源码分析(LinkedList到底是单链表还是双链表?)

  前面在分析ArrayList、Vector容器的源码时,发现的底层实现原理都是维护一个数组,并且自动调整数组的大小(扩容、缩小),随机查找效率高,但是插入、删除操作效率低。在此篇博客中,博主将带领各位小伙伴也看看LinkedList容器的实现原理,它又有什么优势呢,它到底是单链表还是双链表实现呢? 注明:以下源码分析都是基于jdk 1.8.0_221版本 Java容器之LinkedList源...

2020-04-25 23:03:57 1307

原创 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 1214

原创 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 593 1

原创 数据结构之二叉搜索树详解(附C++代码实现查找、插入、删除操作)

  最近在分析分析红黑树时,感觉上来就挑最难的树结构之一进行分析,难度太大,所以特意写这篇二叉搜索树分析的博客作为铺垫。那么为啥挑二叉搜索树进行分析捏?其实红黑树也是一种更为复杂的二叉搜索树,建议阅读一下我的另外一篇博客 数据结构之二叉树、AVL树、红黑树、Trie树、B树、B+树、B*树浅析 。为了帮助大家理解红黑树,先写这篇博客分析二叉搜索树。下面将主要分析二叉搜索树的查找、插入、删除三种操作...

2020-04-18 11:21:27 1631 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除