概述 本文是基于jdk8_271版本进行分析的。 ArrayList是Java集合中出场率最多的一个类。底层是基于数组实现,根据元素的增加而动态扩容,可以理解为它是加强版的数组。ArrayList允许元素为null。它是线程不安全的。 数据结构 实现继承关系 ...
概述 本文是基于jdk 源码进行分析的。 LinkedList底层是基于链表实现。链表没有长度限制,内存地址不需要固定长度,也不需要是连续的地址来进行存储,只需要通过引用来关联前后元素即可完成整个链表的连续。所以链表的优点就是添加删除元素比较快,只需要移动指针,并且不需要判断扩容。缺点就是因为没有索引,所以在查询和遍历元素时候比较慢。 使用场景:在增删操作使用较多,查询遍历操作使用较少情况下比较适 ...
2021-05-25 10:00 0 295 推荐指数:
概述 本文是基于jdk8_271版本进行分析的。 ArrayList是Java集合中出场率最多的一个类。底层是基于数组实现,根据元素的增加而动态扩容,可以理解为它是加强版的数组。ArrayList允许元素为null。它是线程不安全的。 数据结构 实现继承关系 ...
概述 本文是基于jdk8_271版本进行分析的。 HashMap是Map集合中使用最多的。底层是基于数组+链表实现的,jdk8开始底层是基于数组+链表/红黑树实现的。HashMap也会动态扩容,与ArrayList不同的是,HashMap有一个阈值字段,元素数量达到阈值之后就会进行扩容 ...
概述 本文是基于jdk8_271版本进行分析的。 Hashtable与HashMap一样,是一个存储key-value的双列集合。底层是基于数组+链表实现的,没有红黑树结构。Hashtable默认初始化容量为11,Hashtable也会动态扩容,与HashMap不同的是,每次扩容的容量是原 ...
ArrayList实现可变数组的原理: 当元素超出数组内容,会产生一个新数组,将原来数组的数据复制到新数组中,再将新的元素添加到新数组中。 ArrayList:是按照原数组的50%来延长,构造一个初始容量为10的空列表 用ArrayList模拟数组: package ...
一、源码解析1、 LinkedList类定义2、LinkedList数据结构原理3、私有属性4、构造方法5、元素添加add()及原理6、删除数据remove()7、数据获取get()8、数据复制clone()与toArray()9、遍历数据:Iterator()二、ListItr ...
LinkedList和ArrayList一样是集合List的实现类,虽然较之ArrayList,其使用场景并不多,但同样有用到的时候,那么接下来,我们来认识一下它。 一. 定义一个LinkedList 上面代码中采用了两种方式来定义LinkedList,可以定义一个空集合,也可以传递已有 ...
今天我们来探索一下LinkedList和Queue,以及Stack的源码。 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 喜欢的话麻烦star一下哈 文章首发于我的个人博客: https://h2pl.github.io/2018/05/09 ...
Java集合详解2:LinkedList和Queue 今天我们来探索一下LinkedList和Queue,以及Stack的源码。 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 喜欢的话麻烦star一下哈 文章首发于我的个人博客 ...