目录
ArrayList
ArrayList即动态数组集合类,为什么要引入ArrayList?我们之前学过的数组有两种声明方式,动态初始化需要指定数组长度;静态初始化需要指定数组的内容,可是很多时候我们既不确定数组的长度又不确定数组的内容,这就用到了ArrayList。
注意,由于ArrayList底层是一个数组,所以它查询快,增删慢。
ArrayList集合和普通数组最大的区别就是集合中数组的长度可以随意变化。
格式
ArrayList<E> list = new ArrayList<>();
ArrayList的使用有一个尖括号<E>,它代表泛型。注意<>中的内容一定是包装类型而不能是基本类型。
那一定要有尖括号吗?不一定,但通常我们要带尖括号,原因可参照这篇博客
https://blog.youkuaiyun.com/Delicious_Life/article/details/105094658
使用
1.打印泛型的内容
对于ArrayList,直接打印得到的不是地址值而是内容。如果内容是空的,得到的是空的中括号“[ ]”
2.向集合中添加数据,使用add方法
3.从集合中获取元素,参数是索引编号,返回值就是对应位置的元素
4.从集合中删除元素,参数是索引编号,返回值就是对应位置的元素
5.获取集合的尺寸长度,返回值是集合中包含的元素个数
6.遍历集合
(除了使用for循环还可以通过迭代器以及增强for循环)
包装类
因为ArrayList里面存入的是地址值,而基本数据类型没有地址值,因此不能直接存储,但是我们可以存储基本类型对应的包装类
我们用了包装类之后常用的方法和String类型是一样的。但是我们需要注意一点,这个例子用的是int的包装类作泛型,我们最后获取Integer类型的元素是为什么能写成 int xxx = listC.get(1),下面就该介绍装箱和拆箱了
装箱和拆箱
听着有点抽象,但是只要你从上面一路读下来很容易就能记住这两个概念。
装箱:基本数据类型转换成包装类型
拆箱:包装类型转换成基本数据类型
而从jdk1.5开始,java已经实现了自动装箱和拆箱,因此在你获取基本类型元素时,直接使用基本类型变量接收即可。