Java ArrayList集合类的定义和使用(小白必看)
ArrayList 是 List 接口的一个实现类,是程序中最常见的一种集合。
在 ArrayList 内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList 会在内存空间中创建一个更大的数组来存储这些元素。因此,可以将 ArrayList 集合看作一个长度可变的动态数组。
ArrayList 内部的数据存储结构是数组形式的,当删除指定位置的元素或在指定位置插入元素时需要前移或后移数组中后续的所有元素。这类似于排队过程中,如果前面有人离开队伍或插入队伍,那么队伍中后续的人需要改变自己的位置。因此,ArrayList 不适合做大量的增、删操作。但是,ArrayList 可以像数组一样提供基于索引的元素快速访问特性,在遍历和查找元素时非常高效,索引地址从 0 开始。
定义 ArrayList 类的语法格式如下:
下面演示 ArrayList 集合的应用。
声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
在 ArrayList 内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList 会在内存空间中创建一个更大的数组来存储这些元素。因此,可以将 ArrayList 集合看作一个长度可变的动态数组。
ArrayList 内部的数据存储结构是数组形式的,当删除指定位置的元素或在指定位置插入元素时需要前移或后移数组中后续的所有元素。这类似于排队过程中,如果前面有人离开队伍或插入队伍,那么队伍中后续的人需要改变自己的位置。因此,ArrayList 不适合做大量的增、删操作。但是,ArrayList 可以像数组一样提供基于索引的元素快速访问特性,在遍历和查找元素时非常高效,索引地址从 0 开始。
定义 ArrayList 类的语法格式如下:
public class ArrayList<E> extends AbstractList<E> implements List<E>,RandomAccess,Cloneable,Serializable{
//类的内容
}
ArrayList 类实现了 List 接口,故其常用方法 List 接口的一致。ArrayList 类的构造方法有以下 3 个:
- ArrayList():用来构造一个初始容量为 10 的空集合。
- ArrayList(Collection<?extends E>c):用来构造一个包含指定集合 c 中所有元素的集合,新集合中元素的顺序与指定集合 c 中元素的顺序相同。
- ArrayList(int initialCapacity):用来构造具有指定初始容量的空集合。
下面演示 ArrayList 集合的应用。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Demo {
public static void main(String[] args) {
// 使用泛型ArrayList集合
List<String> myList = new ArrayList<>();
// 向集合中添加4个元素
myList.add("one");
myList.add("two");
myList.add("three");
myList.add("four");
System.out.println("此列表元素包括:" + myList);
System.out.println("---get(int i)返回集合中指定下标的元素---");
String s = myList.get(2);
System.out.println("索引号为2的元素是:" + s);
System.out.println("---set(int index, E e)将给定位置的元素替换成新元素,并返回被替换的元素---");
String old = myList.set(2, "3");
System.out.println("被替换的元素:" + old);
System.out.println("此列表元素包括:" + myList);
System.out.println("---void add(int index, E e)向指定位置插入元素---");
myList.add(2, "2");
System.out.println(myList);
System.out.println("---E remove(int index)删除并返回指定位置的元素---");
// 删除索引号为1的元素
old = myList.remove(1);
System.out.println(old);
System.out.println(myList);
System.out.println("---List<T> subList(int start, int end)---");
// 包括0号元素,不包括2号元素
List<String> subList = myList.subList(0, 2);
System.out.println("子集元素包括:" + subList);
System.out.println("---使用for循环结构遍历---");
for (int i = 0; i < myList.size(); i++) {
s = myList.get(i);
System.out.print(s + " ");
}
System.out.println();
System.out.println("---使用foreach语句遍历---");
for (String e : myList) {
System.out.print(e + " ");
}
System.out.println();
System.out.println("---使用迭代器遍历---");
// 列表对象调用iterator()方法,返回一个迭代器对象
Iterator<String> iterator = myList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next() + " ");
}
System.out.println();
}
}
运行结果为:
此列表元素包括:[one, two, three, four]
---get(int i)返回集合中指定下标的元素---
索引号为2的元素是:three
---set(int index, E e)将给定位置的元素替换成新元素,并返回被替换的元素---
被替换的元素:three
此列表元素包括:[one, two, 3, four]
---void add(int index, E e)向指定位置插入元素---
[one, two, 2, 3, four]
---E remove(int index)删除并返回指定位置的元素---
two
[one, 2, 3, four]
---List<T> subList(int start, int end)---
子集元素包括:[one, 2]
---使用for循环结构遍历---
one 2 3 four
---使用foreach语句遍历---
one 2 3 four
---使用迭代器遍历---
one
2
3
four
声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。