由来
我们存储多个数据,可以选择数组容器。而数组的长度是固定的,无法适应数据变化的需 求。为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据。
什么是ArrayList类
java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长。
ArrayList使用步骤
查看类
java.util.ArrayList <E>:该类需要 import导入使后使用。PS: <E>,表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。注意:泛型只能是引用类型,不能是基本类型。
查看构造方法
- public ArrayList() :构造一个内容为空的集合。
查看常用方法
对于元素的操作,基本体现在——增、删、查。常用的方法有:
- public boolean add(E e) :将指定的元素添加到此集合的尾部。方法参数的类型必须和集合泛型一致。返回值代表添加是否成功。备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。但是对于其他集合来说,add添加动作不一定成功。
- public E remove(int index) :移除此集合中指定index的元素。返回被删除的元素。
- public E get(int index) :返回此集合中指定index的元素。返回获取的元素。
- public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。
代码举例
package demo03_ArrayList; import java.util.ArrayList; public class Demo01_ArrayList { public static void main(String[] args) { // 创建了一个ArrayList集合,集合的名称是list,泛型是String里面装的全都是String字符串类型的数据 // 备注:从JDK 1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的。 ArrayList<String> array = new ArrayList<>(); //对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。如果内容是空,得到的是空的中括号:[] System.out.println(array); //向集合中添加元素 array.add("早上"); array.add("中午"); array.add("晚上"); array.add("半夜"); System.out.println(array); //public E get(int index):返回指定索引处的元素 System.out.println("get:" + array.get(2)); ////public E remove(int index):删除指定索引处的元素,返回被删除的元素 System.out.println("remove:" + array.remove(3)); System.out.println(array); //public int size():返回集合中的元素的个数 System.out.println("size:" + array.size()); //遍历输出 for (int i = 0; i < array.size(); i++) { System.out.println(array.get(i)); } } }
代码运行之后结果
如何存储基本数据类型
ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似 <int>不能写,但是存储基本数据类型对应的 包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须转换后才能编写,转换写法如下:
从JDK 1.5+开始,支持自动装箱、自动拆箱。
- 自动装箱:基本类型 --> 包装类型
- 自动拆箱:包装类型 --> 基本类型
代码举例
代码运行之后结果
需求
用一个大集合存入1到1000之间的20个随机数字,,然后筛选其中的偶数元素,放到小集合当中。要求使用自定义的方法来实现筛选。
代码实现
代码运行之后的结果
注意
java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为 查询数据、遍历数据,所以 ArrayList 是最常用的集合。 许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡的。