算法

今日份源码——ArrayList

2019-01-27  本文已影响435人  大黑跟小白的日常

ArrayList原理解读

ArrayList基本数据结构

源码基本结构

我们看到,有好多个空数组,可见,ArrayList中是用数组来存储数据的。那这些数组是怎么用的呢?继续看

几个典型的方法分析

1、判断包含某个值,可是逐个按下标遍历数组数据

遍历elementData数组,逐个取值进行匹配判断

indexOf(o) 返回的是o元素第一次出现的index——数组下标

2、从后往前遍历,查找o最后出现的位置index,下标从大到小遍历数组

4、含有一个clone方法,实则是将elementData数组数据拷贝

测试方法

5、可以直接转成一个数组

注意长度

使用方法

6、获取数据

检查下标大小

直接读取下标数据,非常迅速

直接由数组下标读取值时间复杂度O(1)

7、添加数据

size是实际存储的数据的个数(有别于数组容量) 扩容、迁移判断 grow方法牵扯数组扩容、数据迁移

扩容是原容量的1.5倍扩容(在使用ArrayList时,如果大致知道数值个数,初始化时给出容量是最好的)

判断是否需要扩容、迁移

添加新数据到数组

基础分析到此

上一篇 下一篇

猜你喜欢

热点阅读