A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 长沙-小知姐姐 于 2019-1-3 09:29 编辑



简介:
ArrayList就是动态数组,它提供了动态的增 加和减少元素,实现了Collection和List接口,可以灵活的设置数组的大小。要注意的是 ArrayList并不是线程安全的,因此一般建议在单线程中使用ArrayList
构造方法介绍:

由上面三种构造方法可知,默认情况下使用ArrayList会生成一个大小为10的Object类型 的数组。也可以调用 ArrayList(int initialCapacity) 来初始化Object数组的大小。并且用 户可以往ArrayList中传入一个容器只要这个容器是Collection类型的。调用 ArrayList(Collection c)接口的时候会将容器数组化处理并将这个数组值赋给Object数组。

常用方式扩容:
代码:


扩容源代码:

总结:

扩容主要是和add方法的底层源码相关,其中要弄清楚size和 elementData.length的区别,

size指的是数组中存放元素的个数

elementData.length 表示数组的长度

当new一个ArrayList系统默认产生一个长度为10的elementData数 组,

lementData.length=10,但是由于elementData中还未放任何元素所有size=0。如 果加入元素后数组大小不够会先进行扩容,每次扩容都将数组大小增大一半比如数组大小为10一次扩容后的大小为10+5=10;ArrayList的最大长度为 2^32 .

1 个回复

倒序浏览
一个人一座城0.0 来自手机 中级黑马 2018-12-30 13:15:39
沙发
看一看。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马