【JDk源码解析之一】ArrayList源码解析

1.ArrayList的继承关系如图所示:


2.宏观上说,ArrayList是基于动态数组实现的,数组具有按索引查找的特性,所以访问很快,适合经常查询的数据。

3.具体源码解析。

为什么说ArrayList是动态数组,这个可以看它的构造函数。如下图所示,有两个构造方法,存放元素的elementData是一个数组,同时被初始化。ArrayList的放的元素就是放     在这个数组里。


ArrayLIst的默认初始化容量是10,这个是容量,并不是ArrayList的初始化大小,更不能等同于size,而是elementData[]这个数组的大小,而size指的是数组里面存放有数据的   数量,也就是list的大小。直接new ArrayList,,然后调用相应的size()方法,肯定返回的是0、

   

当容量不够时候(ensureCapacityInternal(size + 1)),会调用相应的扩容的方法(private void grow(int minCapacity))。下面再讲add方法时候,会详细讲解。

3.1 往链表增加元素:add方法。

ArrayList提供了两种add方法,

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值