java容器
闻赤松之清尘,愿承风乎遗则
亘古而常青的昨天永远是过去,也永远会再来;愿你前程似锦,功不唐捐。
展开
-
java容器篇(四)——帮你搞定HashMap
前言这是我写的java容器的第四篇,也是到目前为止最重要最难的一篇,没错,正是HashMap。HashMap在jdk1.8修改部分还是比较大的,也是做了比较多的优化,本文就是基于jdk1.8去进行分析的,当然,可能还会对比一下和jdk1.7的一些区别文章目录前言正文一:存储结构二:核心成员变量和常量三:链表和红黑树的结构四:插入操作:put(K key, V value)和putval()五:...原创 2019-10-12 18:43:27 · 570 阅读 · 0 评论 -
30张图带你彻底理解红黑树/教你初步了解红黑树
两边很详细的红黑树教程博客:30张图带你彻底理解红黑树教你初步了解红黑树转载 2019-10-12 14:17:42 · 314 阅读 · 0 评论 -
EMPTY_ELEMENTDATA和DEFAULTCAPACITY_EMPTY_ELEMENTDATA两个空数组的区别
EMPTY_ELEMENTDATA和DEFAULTCAPACITY_EMPTY_ELEMENTDATA两个都是ArrayList的成员变量,并且都被声明为static final;更为核心的是,这两个都是空数组,那么问题来了,为什么要这样去规范呢?对于这类问题,直接看: /** * Constructs an empty list with the specified init...原创 2019-09-24 00:09:21 · 6244 阅读 · 4 评论 -
验证ArrayList无参构造时数组的容量
在进行ArrayList学习过程中,看到了很多人说ArrayList在无参构造时会创建一个默认容量为10的数组,但是当我查看了ArrayList的源码,却发现其无参构造时,明明指向的是一个空数组: private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; /** * Constructs an ...原创 2019-09-24 00:16:17 · 329 阅读 · 0 评论 -
关于 c.toArray might (incorrectly) not return Object[]以及为什么一定要返回Object数组的原因
在学习ArrayList过程中,看到了源码出现这样的一段话: /** * Constructs an empty list with the specified initial capacity. * * @param initialCapacity the initial capacity of the list * @throws Illeg...原创 2019-09-24 00:07:58 · 723 阅读 · 0 评论 -
ArrayList底层原理及源码分析
ArrayList是java容器中很重要很基础的一部分,在面试中,容器相关的底层问题简直不要太多,那么对于其底层的东西,还是需要结合源码(此处版本:jdk8)进行分析。一 :数据结构ArrayList底层数据结构核心其实是一个Object数组,对于ArrayList的操作都是基于这个Object进行操作而实现的。二:内存模型/内存分配这里我贴上一张我自己画的图,因为我在网上看到一些关于Ar...原创 2019-09-24 20:53:06 · 1398 阅读 · 0 评论 -
Vector源码分析
Vector是java容器中很重要很基础的一部分,在面试中,容器相关的底层问题简直不要太多,那么对于其底层的东西,还是需要结合源码(此处版本:jdk8)进行分析。一 :数据结构Vector底层数据结构核心其实是一个可以自动扩容的Object数组,实际上跟ArrayList的没啥区别,Vector的基本操作都是基于这个Object数组进行操作而实现的。二:内存模型/内存分配这里我贴上一张我自...原创 2019-10-09 14:34:42 · 213 阅读 · 0 评论 -
java容器篇(三)——LinkedList源码分析
上面两篇讲了ArrayList和Vector,这一篇分析的是LinkedList ;一样的 还是结合源码(此处版本:jdk8)进行分析。一 :数据结构LinkedList底层是基于双向链表实现,使用 Node 存储链表节点信息。大概模型如下:二 : 继承关系public class LinkedList<E> extends AbstractSequentialLis...原创 2019-10-10 09:32:20 · 223 阅读 · 0 评论