在Java中,我们使用 ArrayList
类来实现可变大小数组的功能。

Java ArrayList 与 Array 对比
在Java中,在使用数组之前,我们需要声明其大小。一旦数组的大小被声明,就很难更改。
为了解决这个问题,我们可以使用 ArrayList
类。它允许我们创建可变大小的数组。
与数组不同,当我们向 ArrayList 添加或删除元素时,它会自动调整其容量。因此,ArrayList 也被称为动态数组。
创建 ArrayList
在使用 ArrayList
之前,我们需要先导入 java.util.ArrayList
包。以下是如何在Java中创建 ArrayList:
ArrayList<Type> arrayList= new ArrayList<>();
这里,Type 表示 ArrayList 的类型。例如,
// create Integer type arraylist
ArrayList<Integer> arrayList = new ArrayList<>();
// create String type arraylist
ArrayList<String> arrayList = new ArrayList<>();
在上面的程序中,我们使用了 Integer
而不是 int。这是因为我们在创建 ArrayList 时不能使用原始类型。相反,我们必须使用相应的包装类。
这里,Integer
是 int
的对应包装类。要了解更多信息,请访问 Java 包装类。
示例:在 Java 中创建 ArrayList
import java.util.ArrayList;
class Main {
public static void main(String[] args){
// create ArrayList
ArrayList<String> languages = new ArrayList<>();
// Add elements to ArrayList
languages.add("Java");
languages.add("Python");
languages.add("Swift");
System.out.println("ArrayList: " + languages);
}
}
输出
ArrayList: [Java, Python, Swift]
在上面的示例中,我们创建了一个名为 languages 的 ArrayList
。
这里,我们使用了 add()
方法向 ArrayList 添加元素。我们将在本教程后面详细介绍 add()
方法。
ArrayList 的基本操作
ArrayList
类提供了各种方法来对 ArrayList 执行不同的操作。在本教程中,我们将介绍一些常用的 ArrayList 操作。
- 添加元素
- 访问元素
- 更改元素
- 删除元素
1. 向 ArrayList 添加元素
要向 ArrayList 添加单个元素,我们使用 ArrayList
类的 add()
方法。例如:
import java.util.ArrayList;
class Main {
public static void main(String[] args){
// create ArrayList
ArrayList<String> languages = new ArrayList<>();
// add() method without the index parameter
languages.add("Java");
languages.add("C");
languages.add("Python");
System.out.println("ArrayList: " + languages);
}
}
输出
ArrayList: [Java, C, Python]
在上面的示例中,我们创建了一个名为 languages 的 ArrayList
。这里,我们使用 add()
方法向 languages 添加元素。
要了解更多信息,请访问 Java ArrayList add()。
向 ArrayList 添加元素的其他方法
我们还可以将一个索引号作为附加参数传递给 add()
方法,以在指定位置添加元素。例如:
// add JavaScript at index 1
languages.add(1, "JavaScript");
// add C++ at index 3
languages.add(3, "C++");
我们也可以使用 addAll()
方法将一个集合(set、map)的所有元素添加到 ArrayList。例如:
import java.util.ArrayList;
import java.util.HashSet;
class Main {
public static void main(String[] args) {
// create a set
HashSet<String> vowels = new HashSet<>();
vowels.add("a");
vowels.add("e");
vowels.add("i");
// create an arraylist
ArrayList<String> alphabets = new ArrayList<>();
// add all elements of set to arraylist
alphabets.addAll(vowels);
System.out.println("ArrayList: " + alphabets);
}
}
// Output: ArrayList: [a, e, i]
要了解更多信息,请访问 Java ArrayList addAll()。
2. 访问 ArrayList 元素
要从 ArrayList 中访问元素,我们使用 ArrayList
类的 get()
方法。例如:
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<String> animals = new ArrayList<>();
// add elements in the arraylist
animals.add("Cat");
animals.add("Dog");
animals.add("Cow");
System.out.println("ArrayList: " + animals);
// get the element from the arraylist
String str = animals.get(1);
System.out.print("Element at index 1: " + str);
}
}
输出
ArrayList: [Cat, Dog, Cow] Element at index 1: Dog
在上面的示例中,我们使用了参数为 1 的 get()
方法。这里,该方法返回索引为 1 的元素。
要了解更多信息,请访问 Java ArrayList get()。
我们也可以使用 iterator()
方法访问 ArrayList
的元素。要了解更多信息,请访问 Java ArrayList iterator()。
3. 更改 ArrayList 元素
要更改 ArrayList 的元素,我们使用 ArrayList
类的 set()
方法。例如:
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<String> languages = new ArrayList<>();
// add elements in the array list
languages.add("Java");
languages.add("Kotlin");
languages.add("C++");
System.out.println("ArrayList: " + languages);
// change the element of the array list
languages.set(2, "JavaScript");
System.out.println("Modified ArrayList: " + languages);
}
}
输出
ArrayList: [Java, Kotlin, C++] Modified ArrayList: [Java, Kotlin, JavaScript]
在上面的示例中,我们创建了一个名为 languages 的 ArrayList
。请注意以下行:
language.set(2, "JavaScript");
这里,set()
方法将索引为 2 的元素更改为 JavaScript。
要了解更多信息,请访问 Java ArrayList set()。
4. 删除 ArrayList 元素
要从 ArrayList 中删除元素,我们可以使用 ArrayList
类的 remove()
方法。例如:
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<String> animals = new ArrayList<>();
// add elements in the array list
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayList: " + animals);
// remove element from index 2
String str = animals.remove(2);
System.out.println("Updated ArrayList: " + animals);
System.out.println("Removed Element: " + str);
}
}
输出
ArrayList: [Dog, Cat, Horse] Updated ArrayList: [Dog, Cat] Removed Element: Horse
这里,remove()
方法将索引号作为参数。然后,它会删除由索引号指定的元素。
要了解更多信息,请访问 Java ArrayList remove()。
我们也可以一次性删除 ArrayList 中的所有元素。要了解更多信息,请访问
ArrayList 类的方法
在上一节中,我们学习了 ArrayList
类的 add()
、get()
、set()
和 remove()
方法。
除了这些基本方法之外,这里还有一些常用的 ArrayList
方法:
方法 | 描述 |
---|---|
size() | 返回 ArrayList 的长度。 |
sort() | 对 ArrayList 元素进行排序。 |
clone() | 创建一个具有相同元素、大小和容量的新 ArrayList。 |
contains() | 在 ArrayList 中搜索指定元素并返回布尔结果。 |
ensureCapacity() | 指定 ArrayList 可以包含的总元素数。 |
isEmpty() | 检查 ArrayList 是否为空。 |
indexOf() | 在 ArrayList 中搜索指定的元素并返回该元素的索引。 |
如果您想了解 ArrayList 的所有不同方法,请访问 Java ArrayList 方法。
遍历 ArrayList
我们可以使用 Java for-each 循环来遍历 ArrayList 的每个元素。例如:
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
// creating an array list
ArrayList<String> animals = new ArrayList<>();
animals.add("Cow");
animals.add("Cat");
animals.add("Dog");
System.out.println("ArrayList: " + animals);
// iterate using for-each loop
System.out.println("Accessing individual elements: ");
for (String language : animals) {
System.out.print(language);
System.out.print(", ");
}
}
}
输出
ArrayList: [Cow, Cat, Dog] Accessing individual elements: Cow, Cat, Dog,
常见问题
Java 中 ArrayList
和 LinkedList 的一些主要区别是:
ArrayList | LinkedList |
实现了 List 接口 |
实现了 List 、Queue 和 Deque 接口。 |
存储单个值。 | 存储 3 个值:数据、前一个地址和后一个地址 |
提供可变大小数组的功能。 | 提供双向链表的功能 |
我们可以使用 toArray()
方法将 ArrayList
转换为数组。例如:
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<String> languages = new ArrayList<>();
// add elements in the array list
languages.add("Java");
languages.add("Python");
languages.add("C++");
System.out.println("ArrayList: " + languages);
// create a new array of String type
String[] arr = new String[languages.size()];
// convert ArrayList into an array
languages.toArray(arr);
System.out.print("Array: ");
// access elements of the array
for (String item : arr) {
System.out.print(item + ", ");
}
}
}
输出
ArrayList: [Java, Python, C++] Array: Java, Python, C++,
在上面的示例中,toArray()
方法将 languages ArrayList 转换为数组并将其存储在 arr 中。要了解更多信息,请访问 Java ArrayList toArray()。
我们使用 Arrays
类的 asList()
方法。要使用 asList()
,我们必须先导入 java.util.Arrays
包。例如:
import java.util.ArrayList;
import java.util.Arrays;
class Main {
public static void main(String[] args) {
// create an array of String type
String[] arr = { "Java", "Python", "C++" };
System.out.print("Array: ");
// print array
for (String str : arr) {
System.out.print(str);
System.out.print(" ");
}
// create an ArrayList from an array
ArrayList<String> languages = new ArrayList<>(Arrays.asList(arr));
System.out.println("\nArrayList: " + languages);
}
}
输出
Array: Java Python C++ ArrayList: [Java, Python, C++]
在上面的程序中,我们首先创建了一个 String
类型的数组 arr
。请注意表达式:
Arrays.asList(arr)
这里,asList()
方法将数组转换为 ArrayList。
我们使用 Arrays.asList()
方法在一行中创建和初始化 ArrayList。例如:
import java.util.ArrayList;
import java.util.Arrays;
class Main {
public static void main(String[] args) {
// create and initialize ArrayList
ArrayList<String> languages = new ArrayList<>(Arrays.asList("Java", "Python", "C"));
System.out.println("ArrayList: " + languages);
}
}
// Output: ArrayList: [Java, Python, C]
我们使用 ArrayList
类的 toString()
方法将 ArrayList 转换为 String。例如:
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<String> languages = new ArrayList<>();
// add elements in the ArrayList
languages.add("Java");
languages.add("Python");
languages.add("Kotlin");
System.out.println("ArrayList: " + languages);
// convert ArrayList into a String
String str = languages.toString();
System.out.println("String: " + str);
}
}
输出
ArrayList: [Java, Python, Kotlin] String: [Java, Python, Kotlin]
这里,toString()
方法将整个 ArrayList 转换为一个字符串。要了解更多信息,请访问 Java ArrayList toString()。
我们也可以使用 List 接口创建 ArrayList。这是因为 ArrayList 类实现了 List 接口。我们来看一个例子:
import java.util.ArrayList;
import java.util.List;
class Main {
public static void main(String[] args) {
// create arraylist using List
List<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("Python");
languages.add("C");
System.out.println("ArrayList: " + languages);
}
}
// Output: ArrayList: [Java, Python, C]