Skip to content

Java - 集合 ArrayList

说是集合,实际上是自动扩容的Vector.


集合只能存引用数据类型.如果想存基本数据类型,那么就需要存储包装类. 集合的长度会自动伸长和缩短.

import java.util.ArrayList.
ArrayList arr = new ArrayList();

这样如何限定数据的类型? 泛型: 212f6b54fa9223cbff45476c8c1c90d5_MD5 因此上述new的方式是不对的.正确方法是:

ArrayList<String> list = new ArrayList<String>();//JDk7以前 注意不能用int.

ArrayList<String> list = new ArrayList<>();//JDk7以后

另外,是可以直接打印的: de8ab333b6d6e0a29c3b76fa438acd25_MD5


ArrayList和数组一样有索引 常用方法: ac53b172c6dd13ddcc8cec0d9252e2ab_MD5 add方法永远返回true.

list.fori + tab 会自动生成遍历代码.


包装类: 358b56a2b974de098dcdbdd4efeb4de1_MD5 那么如何使用呢? 4564b76c5c8a5084396af6c96498d98c_MD5


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


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