原文: https://www.programiz.com/java-programming/arraylist

在本教程中,我们将学习 Java ArrayList类。 我们将借助示例学习不同的ArrayList操作和方法。

ArrayList类是List接口的实现,允许我们创建可调整大小的数组。

Java `ArrayList`类 - 图1


Java 数组与ArrayList

在 Java 中,我们需要先声明数组的大小,然后才能使用它。 一旦声明了数组的大小,就很难更改它。

要解决此问题,我们可以使用ArrayList类。java.util包中的ArrayList类允许我们创建可调整大小的数组。

与数组不同,当我们从ArrayList中添加或删除元素时,ArrayListArrayList类的对象)可以自动调整其容量。 因此,ArrayList也称为动态数组。


创建一个ArrayList

这是我们可以用 Java 创建ArrayList的方法:

  1. ArrayList<Type> arrayList= new ArrayList<>();

在此,Type表示ArrayList的类型。 例如,

  1. // create Integer type arraylist
  2. ArrayList<Integer> arrayList = new ArrayList<>();
  3. // create String type arraylist
  4. ArrayList<String> arrayList = new ArrayList<>();

在上面的程序中,我们使用了IntegerString。 在此,Integerint类型的对应包装类。

包装器类是包装原始数据类型的类。 例如,Integer类包装int类型,Float类包装float类型,依此类推。

注意:我们无法创建原始数据类型(如intfloatchar等)的ArrayList。相反,我们必须使用它们对应的包装器类。

对于字符串,String是一个类,没有包装器类。 因此,我们按原样使用String


我们还可以使用List接口创建ArrayList。 这是因为ArrayList类实现了List接口。

  1. List<String> list = new ArrayList<>();

ArrayList的方法

ArrayList提供了允许我们执行ArrayList操作的各种方法。


将元素添加到ArrayList

1.使用add()方法

要将单个元素添加到ArrayList,我们使用add()方法。 例如,

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args){
  4. ArrayList<String> animals = new ArrayList<>();
  5. // Add elements
  6. animals.add("Dog");
  7. animals.add("Cat");
  8. animals.add("Horse");
  9. System.out.println("ArrayList: " + animals);
  10. }
  11. }

输出

  1. ArrayList: [Dog, Cat, Horse]

2.使用索引号

我们还可以使用索引将元素添加到ArrayList中。 例如,

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args){
  4. ArrayList<String> animals = new ArrayList<>();
  5. // Add elements
  6. animals.add(0,"Dog");
  7. animals.add(1,"Cat");
  8. animals.add(2,"Horse");
  9. System.out.println("ArrayList: " + animals);
  10. }
  11. }

输出

  1. ArrayList: [Dog, Cat, Horse]

3.将一个ArrayList的元素添加到另一个ArrayList

要将ArrayList的所有元素添加到新ArrayList中,我们使用addAll()方法。 例如,

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args){
  4. ArrayList<String> mammals = new ArrayList<>();
  5. mammals.add("Dog");
  6. mammals.add("Cat");
  7. mammals.add("Horse");
  8. System.out.println("Mammals: " + mammals);
  9. ArrayList<String> animals = new ArrayList<>();
  10. animals.add("Crocodile");
  11. // Add all elements of mammals in animals
  12. animals.addAll(mammals);
  13. System.out.println("Animals: " + animals);
  14. }
  15. }

输出

  1. Mammals: [Dog, Cat, Horse]
  2. Animals: [Crocodile, Dog, Cat, Horse]

使用asList()初始化ArrayList

与数组不同,我们不能直接初始化ArrayList。 但是,我们可以使用Arrays类的asList()方法来达到相同的效果。

为了使用asList()方法,我们必须首先导入java.util.Arrays包。

例如,

  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. class Main {
  4. public static void main(String[] args) {
  5. // Creating an array list
  6. ArrayList<String> animals = new ArrayList<>(Arrays.asList("Cat", "Cow", "Dog"));
  7. System.out.println("ArrayList: " + animals);
  8. // Access elements of the array list
  9. String element = animals.get(1);
  10. System.out.println("Accessed Element: " + element);
  11. }
  12. }

输出

  1. ArrayList: [Cat, Cow, Dog]
  2. Accessed Elemenet: Cow

在上面的示例中,请注意以下表达式:

  1. new ArrayList<>(Arrays.asList(("Cat", "Cow", "Dog"));

在这里,我们首先创建了一个由 3 个元素组成的数组:"Cat""Cow""Dog"。 然后,asList()方法用于将数组转换为ArrayList

要了解有关初始化ArrayList的不同方法的更多信息,请访问:在一行中初始化ArrayList


访问ArrayList元素

1.使用get()方法

要随机访问ArrayList的元素,我们使用get()方法。 例如,

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args) {
  4. ArrayList<String> animals= new ArrayList<>();
  5. // Add elements in the array list
  6. animals.add("Dog");
  7. animals.add("Horse");
  8. animals.add("Cat");
  9. System.out.println("ArrayList: " + animals);
  10. // Get the element from the array list
  11. String str = animals.get(0);
  12. System.out.print("Element at index 0: " + str);
  13. }
  14. }

输出

  1. ArrayList: [Dog, Horse, Cat]
  2. Element at index 0: Dog

2.使用iterator()方法

要顺序访问ArrayList的元素,我们使用iterator()方法。 我们必须导入java.util.Iterator包才能使用此方法。 例如,

  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. class Main {
  4. public static void main(String[] args){
  5. ArrayList<String> animals = new ArrayList<>();
  6. // Add elements in the array list
  7. animals.add("Dog");
  8. animals.add("Cat");
  9. animals.add("Horse");
  10. animals.add("Zebra");
  11. // Create an object of Iterator
  12. Iterator<String> iterate = animals.iterator();
  13. System.out.print("ArrayList: ");
  14. // Use methods of Iterator to access elements
  15. while(iterate.hasNext()){
  16. System.out.print(iterate.next());
  17. System.out.print(", ");
  18. }
  19. }
  20. }

输出

  1. ArrayList: Dog, Cat, Horse, Zebra,

注意

  • 如果ArrayList中存在下一个元素,则hasNext()返回true
  • next()返回ArrayList中的下一个元素

更改ArrayList元素

要更改ArrayList的元素,我们可以使用set()方法。 例如,

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args) {
  4. ArrayList<String> animals= new ArrayList<>();
  5. // Add elements in the array list
  6. animals.add("Dog");
  7. animals.add("Cat");
  8. animals.add("Horse");
  9. System.out.println("ArrayList: " + animals);
  10. // Change the element of the array list
  11. animals.set(2, "Zebra");
  12. System.out.println("Modified ArrayList: " + animals);
  13. }
  14. }

输出

  1. ArrayList: [Dog, Cat, Horse]
  2. Modified ArrayList: [Dog, Cat, Zebra]

删除ArrayList元素

1.使用remove()方法

要从ArrayList中删除一个元素,我们可以使用remove()方法。 例如,

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args) {
  4. ArrayList<String> animals = new ArrayList<>();
  5. // Add elements in the array list
  6. animals.add("Dog");
  7. animals.add("Cat");
  8. animals.add("Horse");
  9. System.out.println("Initial ArrayList: " + animals);
  10. // Remove element from index 2
  11. String str = animals.remove(2);
  12. System.out.println("Final ArrayList: " + animals);
  13. System. out.println("Removed Element: " + str);
  14. }
  15. }

输出

  1. Initial ArrayList: [Dog, Cat, Horse]
  2. Final ArrayList: [Dog, Cat]
  3. Removed Element: Horse

2.使用removeAll()方法

要从ArrayList中删除所有元素,我们使用removeAll()方法。 例如,

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args) {
  4. ArrayList<String> animals = new ArrayList<>();
  5. // Add elements in the ArrayList
  6. animals.add("Dog");
  7. animals.add("Cat");
  8. animals.add("Horse");
  9. System.out.println("Initial ArrayList: " + animals);
  10. // Remove all the elements
  11. animals.removeAll(animals);
  12. System.out.println("Final ArrayList: " + animals);
  13. }
  14. }

输出

  1. Initial ArrayList: [Dog, Cat, Horse]
  2. Final ArrayList: []

3.使用clear()方法

我们还可以使用clear()方法从ArrayList中删除所有元素。 例如,

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args) {
  4. ArrayList<String> animals= new ArrayList<>();
  5. // Add elements in the array list
  6. animals.add("Dog");
  7. animals.add("Cat");
  8. animals.add("Horse");
  9. System.out.println("Initial ArrayList: " + animals);
  10. // Remove all the elements
  11. animals.clear();
  12. System.out.println("Final ArrayList: " + animals);
  13. }
  14. }

输出

  1. Initial ArrayList: [Dog, Cat, Horse]
  2. Final ArrayList: []

注意clear()方法比removeAll()方法更有效。


遍历ArrayList

1.使用for循环

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args) {
  4. // Creating an array list
  5. ArrayList<String> animals = new ArrayList<>();
  6. animals.add("Cow");
  7. animals.add("Cat");
  8. animals.add("Dog");
  9. System.out.println("ArrayList: " + animals);
  10. // Using for loop
  11. System.out.println("Accessing individual elements: ");
  12. for(int i = 0; i < animals.size(); i++) {
  13. System.out.print(animals.get(i));
  14. System.out.print(", ");
  15. }
  16. }
  17. }

输出

  1. ArrayList: [Cow, Cat, Dog]
  2. Accessing individual elements:
  3. Cow, Cat, Dog,

2.使用forEach循环

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args) {
  4. // Creating an array list
  5. ArrayList<String> animals = new ArrayList<>();
  6. animals.add("Cow");
  7. animals.add("Cat");
  8. animals.add("Dog");
  9. System.out.println("ArrayList: " + animals);
  10. // Using forEach loop
  11. System.out.println("Accessing individual elements: ");
  12. for(String animal : animals) {
  13. System.out.print(animal);
  14. System.out.print(", ");
  15. }
  16. }
  17. }

输出

  1. ArrayList: [Cow, Cat, Dog]
  2. Accessing individual elements:
  3. Cow, Cat, Dog,

在两个示例中,我们都使用循环访问了ArrayList的各个元素。


获取ArrayList的长度

要获取ArrayList的长度,我们使用size()方法。 例如,

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args) {
  4. ArrayList<String> animals= new ArrayList<>();
  5. // Adding elements in the arrayList
  6. animals.add("Dog");
  7. animals.add("Horse");
  8. animals.add("Cat");
  9. System.out.println("ArrayList: " + animals);
  10. // getting the size of the arrayList
  11. System.out.println("Size: " + animals.size());
  12. }
  13. }

输出

  1. ArrayList: [Dog, Horse, Cat]
  2. Size: 3

ArrayList的元素进行排序

要对ArrayList的元素进行排序,我们使用Collections类的sort()方法。 为了使用它,我们必须首先导入java.util.Collections包。

默认情况下,排序以字母或数字升序进行。 例如,

  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. class Main {
  4. public static void main(String[] args){
  5. ArrayList<String> animals= new ArrayList<>();
  6. // Add elements in the array list
  7. animals.add("Horse");
  8. animals.add("Zebra");
  9. animals.add("Dog");
  10. animals.add("Cat");
  11. System.out.println("Unsorted ArrayList: " + animals);
  12. // Sort the array list
  13. Collections.sort(animals);
  14. System.out.println("Sorted ArrayList: " + animals);
  15. }
  16. }

输出

  1. Unsorted ArrayList: [Horse, Zebra, Dog, Cat]
  2. Sorted ArrayList: [Cat, Dog, Horse, Zebra]

要了解有关对ArrayList进行排序的更多信息,请访问 Java ArrayList排序。


Java ArrayList到数组

在 Java 中,我们可以使用toArray()方法将ArrayList转换为数组。 例如,

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args) {
  4. ArrayList<String> animals= new ArrayList<>();
  5. // Add elements in the array list
  6. animals.add("Dog");
  7. animals.add("Cat");
  8. animals.add("Horse");
  9. System.out.println("ArrayList: " + animals);
  10. // Create a new array of String type
  11. String[] arr = new String[animals.size()];
  12. // Convert ArrayList into an array
  13. animals.toArray(arr);
  14. System.out.print("Array: ");
  15. for(String item:arr) {
  16. System.out.print(item+", ");
  17. }
  18. }
  19. }

输出

  1. ArrayList: [Dog, Cat, Horse]
  2. Array: Dog, Cat, Horse,

Java 数组到ArrayList

我们还可以将数组转换为ArrayList。 为此,我们可以使用Arrays类的asList()方法。

要使用asList(),我们必须首先导入java.util.Arrays包。 例如,

  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. class Main {
  4. public static void main(String[] args) {
  5. // Create an array of String type
  6. String[] arr = {"Dog", "Cat", "Horse"};
  7. System.out.print("Array: ");
  8. // Print array
  9. for(String str: arr) {
  10. System.out.print(str);
  11. System.out.print(" ");
  12. }
  13. // Create an ArrayList from an array
  14. ArrayList<String> animals = new ArrayList<>(Arrays.asList(arr));
  15. System.out.println("\nArrayList: " + animals);
  16. }
  17. }

输出

  1. Array: Dog, Cat, Horse
  2. ArrayList: [Dog, Cat, Horse]

在上面的程序中,我们首先创建了String类型的数组arr

然后,我们使用asList()方法将数组转换为ArrayList


Java ArrayList转换为字符串

要将ArrayList转换为String,我们可以使用toString()方法。 例如,

  1. import java.util.ArrayList;
  2. class Main {
  3. public static void main(String[] args) {
  4. ArrayList<String> animals = new ArrayList<>();
  5. // Add elements in the ArrayList
  6. animals.add("Dog");
  7. animals.add("Cat");
  8. animals.add("Horse");
  9. System.out.println("ArrayList: " + animals);
  10. // Convert ArrayList into an String
  11. String str = animals.toString();
  12. System.out.println("String: " + str);
  13. }
  14. }

输出

  1. ArrayList: [Dog, Cat, Horse]
  2. String: [Dog, Cat, Horse]

注意toString()将整个ArrayList转换为单个String


其他ArrayList方法

方法 内容描述
clone() 用相同的元素,大小和容量创建一个新的ArrayList
contains() ArrayList中搜索指定的元素,并返回布尔结果。
ensureCapacity() 指定ArrayList可以包含的总元素。
isEmpty() 检查ArrayList是否为空。
indexOf() ArrayList中搜索指定的元素,并返回该元素的索引。
trimToSize() ArrayList的容量减少到当前大小。