前言

本文基于JDK1.8版本的ArrayList,展开源码级别的分析。


准备工作

Class内部的api:
数据结构 - ArrayList

获取数组的内部组件类型。如果不是数组类型,返回null。

Array内部的api:
数据结构 - ArrayList
数据结构 - ArrayList

创建一个给定类型与长度的数组。

Arrays内部的api:
数据结构 - ArrayList

复制数组并将其转换为给定类型。


ArrayList源码分析

构造器

先来看下它的构造器
数据结构 - ArrayList

使用长度为0的Object数组作为存储数据的结构。

  • elementData:transient Object[]类型,用于存储数据。
  • DEFAULTCAPACITY_EMPTY_ELEMENTDATA:{}。

数据结构 - ArrayList

使用长度为给定值的Object数组作为存储数据的结构。

数据结构 - ArrayList

使用长度为集合长度、类型为集合指定类型的数组作为存储数据的结构。


添加元素

然后看下添加元素的方法。

数据结构 - ArrayList

数据结构 - ArrayList

数据结构 - ArrayList

  • DEFAULT_CAPACITY :10。

数据结构 - ArrayList

数据结构 - ArrayList

正常情况下,容量扩容为原来的1.5倍。

数据结构 - ArrayList

  • MAX_ARRAY_SIZE:2147483639。
  • MAX_VALUE:2147483647。

容量<=2147483639,或者为2147483647。

再来看另一种添加元素的方法。

数据结构 - ArrayList
数据结构 - ArrayList


查找元素

数据结构 - ArrayList
数据结构 - ArrayList

检查索引的有效性。

数据结构 - ArrayList

获取给定索引的元素。


删除元素

数据结构 - ArrayList

删除指定索引的元素。

数据结构 - ArrayList

删除列表中第一个元素的值为给定值的元素。

数据结构 - ArrayList

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-11
  • 2022-12-23
  • 2021-12-18
  • 2021-07-14
猜你喜欢
  • 2021-10-13
  • 2021-05-30
  • 2022-12-23
  • 2022-12-23
  • 2021-04-10
  • 2022-02-25
  • 2022-12-23
相关资源
相似解决方案