Java ArrayList

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

它实现了 List 接口,该接口是 集合框架的一部分。

The List interface extends the Collection interface and the ArrayList class implements List.
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 时不能使用原始类型。相反,我们必须使用相应的包装类。

这里,Integerint 的对应包装类。要了解更多信息,请访问 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]

在上面的示例中,我们创建了一个名为 languagesArrayList

这里,我们使用了 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]

在上面的示例中,我们创建了一个名为 languagesArrayList。这里,我们使用 add() 方法向 languages 添加元素。

要了解更多信息,请访问 Java ArrayList add()

向 ArrayList 添加元素的其他方法

如何在 ArrayList 的指定位置添加元素?

我们还可以将一个索引号作为附加参数传递给 add() 方法,以在指定位置添加元素。例如:

// add JavaScript at index 1
languages.add(1, "JavaScript");

// add C++ at index 3
languages.add(3, "C++");
如何将一个集合(set、map)的所有元素添加到 ArrayList?

我们也可以使用 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

在上面的示例中,我们使用了参数为 1get() 方法。这里,该方法返回索引为 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]

在上面的示例中,我们创建了一个名为 languagesArrayList。请注意以下行:

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 有什么区别?

Java 中 ArrayListLinkedList 的一些主要区别是:

ArrayList LinkedList
实现了 List 接口 实现了 ListQueueDeque 接口。
存储单个值。 存储 3 个值:数据、前一个地址和后一个地址
提供可变大小数组的功能。 提供双向链表的功能
如何将 ArrayList 转换为 Array?

我们可以使用 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()

如何将 Array 转换为 ArrayList?

我们使用 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。

如何在一行中创建和初始化 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 转换为 String?

我们使用 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?

我们也可以使用 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]
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战