Java - 集合 ArrayList¶
说是集合,实际上是自动扩容的Vector.
集合只能存引用数据类型.如果想存基本数据类型,那么就需要存储包装类. 集合的长度会自动伸长和缩短.
import java.util.ArrayList.
ArrayList arr = new ArrayList();
这样如何限定数据的类型?
泛型:
因此上述new的方式是不对的.正确方法是:
ArrayList<String> list = new ArrayList<String>();//JDk7以前
注意不能用int.
ArrayList<String> list = new ArrayList<>();//JDk7以后
另外,是可以直接打印的:

ArrayList和数组一样有索引
常用方法:
add方法永远返回true.
list.fori + tab 会自动生成遍历代码.
包装类:
那么如何使用呢?

注意,集合当中存的实际上是引用/指针.和数组一样.
addAll:

分割线:
底层原理:
(这点和c++不一样)
- 空参构造 底层创建一个默认长度为0的数组elementData
- 添加一个元素时,底层会创建一个新的长度为10的数组.
- 存满时自动扩容到原来的1.5倍.
- 如果一次添加多个元素超过原来的大小,那么以新大小为准.
- 因此,这里没有capacity成员变量.为什么?因为底层的数组自带成员变量length
源码调用链:
