更新时间:2022-03-22 来源:黑马程序员 浏览量:
ArrayList是List接口的一个实现类,它是程序中最常见的一种集合。在ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。
正是由于ArrayList内部的数据存储结构是数组形式,在增加或删除指定位置的元素时,会创建新的数组,效率比较低,因此不适合做大量的增删操作。但是,这种数组结构允许程序通过索引的方式来访问元素,因此使用ArrayList集合在遍历和查找元素时显得非常高效。
ArrayList集合中大部分方法都是从接口Collection和List继承过来的,接下来通过一个案例来学习如何使用ArrayList集合的方法来存取元素,如文件所示。
文件6-1Example01.java
import java.util.ArrayList; public class Example01 { public static void main(String[] args) { // 创建ArrayList集合 ArrayList list = new ArrayList(); // 向集合中添加元素 list.add("stu1"); list.add("stu2"); list.add("stu3"); list.add("stu4"); System.out.println("集合的长度:" + list.size()); System.out.println("第2个元素是:" + list.get(1)); } }运行结果如图所示。
图6-2运行结果
首先通过“new ArrayList()”语句创建了一个空的ArrayList集合,接着调用add(Object o)方法向ArrayList集合中添加了4个元素,然后调用size()方法获取集合中元素个数,最后通过调用ArrayList的get(int index)方法取出指定索引位置的元素。
从图6-2可以看出,索引位置为1的元素是集合中的第二个元素,这说明集合和数组一样,索引的取值是从0开始的,最后一个索引是size-1,在访问元素时一定要注意索引不可超出此范围,否则会抛出角标越界异常IndexOutOfBoundsException。
注意:1.在编译文件6-1时,会得到如图6-3所示的警告,意思是说在使用ArrayList集合时并没有显示的指定集合中存储什么类型的元素,会产生安全隐患,这涉及到泛型安全机制的问题。与泛型相关的知识将在后面的章节详细讲解,现在无需考虑。
2.在编写程序时,不要忘记使用类似于“import java.util.ArrayList;”语句导包,否则程序将会编译失败,显示类找不到,如错误!未找到引用源。所示。要解决此问题,只需单击图6-4所示错误小窗口中的第一行“Import’ArrayList’(java.util)”链接即可,这样Eclipse就会自动导入ArrayList的包。另外在后面的案例中可能会大量的用到集合类,除了可以使用上述方式导入指定集合类所在的包外,为了方便,程序中还可以统一使用import java.util.*;来进行导包,其中*为通配符,整个语句的意思是将java.util包中的内容都导入进来。
图6-4编译错误