Java ArrayList
在本教程中,我们将学习 Java 中的 ArrayList 类。我们将通过示例了解 ArrayList 的不同操作和方法。
在本教程中,我们将学习 Java 中的 ArrayList 类。我们将通过示例了解 ArrayList 的不同操作和方法。
Java 集合框架的 ArrayList
类实现了可调整大小的数组的功能。它实现了 List
接口。
Java ArrayList 实现
Java ArrayList 与数组
在使用数组的时候,我们需要先声明数组的大小,然后才能使用。一旦声明了数组的大小,就很难更改它。
与数组不同, ArrayList
可以在我们添加或删除元素时自动调整其容量。因此, ArrayList 可以认为是一个动态数组,是一个可可以自动调整大小的数组。
创建一个 ArrayList
要使用 ArrayList
,我们需要先导入 java.util.ArrayList
包。就像前面用到的那样,我们可以按照以下方法创建 ArrayList
对象:
ArrayList<Type> arrayList = new ArrayList<>();
这里, Type
表示 ArrayList
中存放的元素的数据类型。例如,
// 存放整数的 arraylist
ArrayList<Integer> arrayList = new ArrayList<>();
// 存放字符串的 arraylist
ArrayList<String> arrayList = new ArrayList<>();
在上面的程序中,我们使用了 Integer
而不是 int
。这是因为我们在创建 ArrayList
时不能使用原始类型。我们必须使用相应的包装类。
! Integer
是 int
的包装类型,要了解更多信息,请访问Java 包装类型。
示例:在 Java 中创建 ArrayList
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> languages = new ArrayList<>();
// 添加元素
languages.add("Java");
languages.add("Python");
languages.add("Swift");
System.out.println("ArrayList: " + languages);
}
}
输出
ArrayList: [Java, Python, Swift]
在上面的例子中,我们创建了一个 ArrayList
对象 languages
用来存放编程语言的名称。
我们使用了 add()
方法向 ArrayList
添加元素。我们将在本教程后面详细了解 add()
方法。
注意:我们也可以将 ArrayList
对象赋值给 List
类型的变量。这是因为 ArrayList
类实现了 List
接口。
List<String> list = new ArrayList<>();
ArrayList 的基本操作
ArrayList
类提供了多种方法来执行不同的操作。我们将在本教程中查看一些常用的 ArrayList
操作:
- 添加元素
- 访问元素
- 更改元素
- 删除元素
向 ArrayList 添加元素
ArrayList
类的 add()
方法可将单个元素添加到列表。例如,
import java.util.ArrayList;
public class Main {
public static void main(String[] args){
ArrayList<String> languages = new ArrayList<>();
// 添加元素到列表最后
languages.add("Java");
languages.add("C");
languages.add("Python");
System.out.println("ArrayList: " + languages);
// 添加元素到列表指定的位置
languages.add(1, "JavaScript");
System.out.println("Updated ArrayList: " + languages);
}
}
输出
ArrayList: [Java, C, Python]
Updated ArrayList: [Java, JavaScript, C, Python]
在上面的例子中,我们创建了一个 ArrayList
对象 languages
用来存放编程语言的名称。在这里,我们使用了 add()
向列表添加编程语言。
注意下面的语句:
languages.add(1, "JavaScript");
在这里,我们使用了索引号参数,用于指定添加新元素的位置。
我们还可以使用 addAll()
方法将一个集合的所有元素添加到 ArrayList
中。
访问 ArrayList 元素
要访问 ArrayList
中的元素,我们使用类的 get()
方法 ArrayList
。例如,
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> animals = new ArrayList<>();
animals.add("Cat");
animals.add("Dog");
animals.add("Cow");
System.out.println("ArrayList: " + animals);
// 获取元素
String str = animals.get(1);
System.out.print("Element at index 1: " + str);
}
}
输出
ArrayList: [Cat, Dog, Cow]
Element at index 1: Dog
在上面的例子中,我们使用了 get()
方法由参数指定的索引位置的元素。
更改 ArrayList 元素
ArrayList
类的 set()
方法可更改指定索引位置的元素。例如,
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("Kotlin");
languages.add("C++");
System.out.println("ArrayList: " + languages);
// 更改索引 2 的元素
languages.set(2, "JavaScript");
System.out.println("Modified ArrayList: " + languages);
}
}
输出
ArrayList: [Java, Kotlin, C++]
Modified ArrayList: [Java, Kotlin, JavaScript]
在上面的例子中,注意下面这个语句:
language.set(2, "JavaScript");
这里, set()
方法将索引 2处的元素更改为 JavaScript
。
删除 ArrayList 元素
ArrayList
类的 remove()
从列表中删除指定的元素元素或指定索引位置的元素。例如,
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> animals = new ArrayList<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayList: " + animals);
// 删除索引 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()
方法以索引号为参数,删除由索引号指定的元素。
此外,我们也可以通过 clear()
删除列表中的所有元素,通过 removeAll()
删除由参数指定集合中的多个元素。
ArrayList 类的方法
在前面的章节中,我们已经了解了 ArrayList
类的 add()
, get()
, set()
,和 remove()
方法。
除了这些基本的方法,下表还列举了一些 ArrayList
常用的方法。
方法 | 说明 |
---|---|
size() |
返回 ArrayList 的长度。 |
sort() |
对 ArrayList 元素进行排序。 |
clone() |
创建一个具有相同元素、大小和容量的新 ArrayList 。 |
contains() |
在 ArrayList 中搜索指定元素并返回布尔结果。 |
ensureCapacity() |
扩容 ArrayList 。 |
isEmpty() |
检查 ArrayList 是否为空。 |
indexOf() |
在 ArrayList 中搜索指定元素并返回该元素的索引。 |
遍历 ArrayList
我们可以使用 Java for-each循环遍历 ArrayList
的每个元素。例如,
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> animals = new ArrayList<>();
animals.add("Cow");
animals.add("Cat");
animals.add("Dog");
System.out.println("ArrayList: " + animals);
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,
ArrayList 转换为数组
我们可以使用 toArray()
方法将 ArrayList
转换为数组。例如,
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("Python");
languages.add("C++");
System.out.println("ArrayList: " + languages);
// 创建一个数组
String[] arr = new String[languages.size()];
// ArrayList 转换为数组
languages.toArray(arr);
System.out.print("Array: ");
for (String item : arr) {
System.out.print(item + ", ");
}
}
}
输出
ArrayList: [Java, Python, C++]
Array: Java, Python, C++,
在上面的例子中,注意下面这行代码完成了 ArrayList
到数组的转换:
languages.toArray(arr);
数组转换为 ArrayList
我们还可以使用 Arrays
工具类的 asList()
方法将数组转换为 ArrayList
。
要使用 asList()
,我们必须先导入 java.util.Arrays
包。例如,
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 数组
String[] arr = {"Java", "Python", "C++"};
System.out.print("Array: ");
// 打印数组
System.out.print(Arrays.toString(arr));
// 将数组转为 ArrayList
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
构造方法转为 ArrayList
对象。
注意:我们也可以使用 Arrays.asList()
方法在一行中创建和初始化 ArrayList
。例如,
// create and initialize arraylist
ArrayList<String> animals = new ArrayList<>(Arrays.asList("Cat", "Cow", "Dog"));
ArrayList 到字符串的转换
我们可以使用 toString()
方法将 ArrayList
转换为字符串。例如,
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("Python");
languages.add("Kotlin");
System.out.println("ArrayList: " + languages);
String str = languages.toString();
System.out.println("String: " + str);
}
}
输出
ArrayList: [Java、Python、Kotlin]
String: [Java、Python、Kotlin]