📜  Java ArrayList类

📅  最后修改于: 2020-09-26 13:36:19             🧑  作者: Mango

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

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

Java ArrayList类实现List接口。


Java数组与ArrayList

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

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

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


创建一个ArrayList

这是我们可以用Java创建数组列表的方法:

ArrayList arrayList= new ArrayList<>();

此处, 类型表示阵列列表的类型。例如,

// create Integer type arraylist
ArrayList arrayList = new ArrayList<>();

// create String type arraylist
ArrayList arrayList = new ArrayList<>();

在上面的程序中,我们使用了IntegerString 。在这里, Integerint类型的相应包装器类。

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

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

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


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

List list = new ArrayList<>();

ArrayList的方法

ArrayList提供了各种方法,使我们可以执行数组列表操作。


将元素添加到ArrayList

1.使用add()方法

要将单个元素添加到数组列表,请使用add()方法。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args){
        ArrayList animals = new ArrayList<>();

        // Add elements
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("ArrayList: " + animals);
    }
}

输出

ArrayList: [Dog, Cat, Horse]

2.使用索引号

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

import java.util.ArrayList;

class Main {
    public static void main(String[] args){
        ArrayList animals = new ArrayList<>();

        // Add elements
        animals.add(0,"Dog");
        animals.add(1,"Cat");
        animals.add(2,"Horse");
        System.out.println("ArrayList: " + animals);
    }
}

输出

ArrayList: [Dog, Cat, Horse]

3.将一个数组列表的元素添加到另一个数组列表

要将数组列表的所有元素添加到新数组列表,请使用addAll()方法。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args){
        ArrayList mammals = new ArrayList<>();
        mammals.add("Dog");
        mammals.add("Cat");
        mammals.add("Horse");
        System.out.println("Mammals: " + mammals);

        ArrayList animals = new ArrayList<>();
        animals.add("Crocodile");

        // Add all elements of mammals in animals
        animals.addAll(mammals);
        System.out.println("Animals: " + animals);
    }
}

输出

Mammals: [Dog, Cat, Horse]
Animals: [Crocodile, Dog, Cat, Horse]

使用asList()初始化ArrayList

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

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

例如,

import java.util.ArrayList;
import java.util.Arrays;

class Main {
    public static void main(String[] args) {
        // Creating an array list
        ArrayList animals = new ArrayList<>(Arrays.asList("Cat", "Cow", "Dog"));
        System.out.println("ArrayList: " + animals);

        // Access elements of the array list
        String element = animals.get(1);
        System.out.println("Accessed Element: " + element);
    }
}

输出

ArrayList: [Cat, Cow, Dog]
Accessed Elemenet: Cow

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

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

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

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


访问ArrayList元素

1.使用get()方法

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

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList animals= new ArrayList<>();

        // Add elements in the array list
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        System.out.println("ArrayList: " + animals);

        // Get the element from the array list
        String str = animals.get(0);
        System.out.print("Element at index 0: " + str);
    }
}

输出

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

2.使用iterator()方法

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

import java.util.ArrayList;
import java.util.Iterator;

class Main {
    public static void main(String[] args){
        ArrayList animals = new ArrayList<>();

        // Add elements in the array list
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        animals.add("Zebra");

        // Create an object of Iterator
        Iterator iterate = animals.iterator();
        System.out.print("ArrayList: ");

        // Use methods of Iterator to access elements
        while(iterate.hasNext()){
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

输出

ArrayList: Dog, Cat, Horse, Zebra,

注意事项

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

更改ArrayList元素

要更改数组列表的元素,可以使用set()方法。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList animals= new ArrayList<>();
        // Add elements in the array list
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("ArrayList: " + animals);

        // Change the element of the array list
        animals.set(2, "Zebra");
        System.out.println("Modified ArrayList: " + animals);
    }
}

输出

ArrayList: [Dog, Cat, Horse]
Modified ArrayList: [Dog, Cat, Zebra]

删除ArrayList元素

1.使用remove()方法

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

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList animals = new ArrayList<>();

        // Add elements in the array list
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("Initial ArrayList: " + animals);

        // Remove element from index 2
        String str = animals.remove(2);
        System.out.println("Final ArrayList: " + animals);
        System. out.println("Removed Element: " + str);
    }
}

输出

Initial ArrayList: [Dog, Cat, Horse]
Final ArrayList: [Dog, Cat]
Removed Element: Horse

2.使用removeAll()方法

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

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList animals = new ArrayList<>();

        // Add elements in the ArrayList
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("Initial ArrayList: " + animals);

        // Remove all the elements
        animals.removeAll(animals);
        System.out.println("Final ArrayList: " + animals);
    }
}

输出

Initial ArrayList: [Dog, Cat, Horse]
Final ArrayList: []

3.使用clear()方法

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

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList animals= new ArrayList<>();

        // Add elements in the array list
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("Initial ArrayList: " + animals);

        // Remove all the elements
        animals.clear();
        System.out.println("Final ArrayList: " + animals);
    }
}

输出

Initial ArrayList: [Dog, Cat, Horse]
Final ArrayList: []

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


遍历ArrayList

1.使用for循环

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        // Creating an array list
        ArrayList animals = new ArrayList<>();
        animals.add("Cow");
        animals.add("Cat");
        animals.add("Dog");
        System.out.println("ArrayList: " + animals);

        // Using for loop
        System.out.println("Accessing individual elements: ");

        for(int i = 0; i < animals.size(); i++) {
            System.out.print(animals.get(i));
            System.out.print(", ");
        }
    }
}

输出

ArrayList: [Cow, Cat, Dog]
Accessing individual elements:
Cow, Cat, Dog,

2.使用forEach循环

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        // Creating an array list
        ArrayList animals = new ArrayList<>();
        animals.add("Cow");
        animals.add("Cat");
        animals.add("Dog");
        System.out.println("ArrayList: " + animals);

        // Using forEach loop
        System.out.println("Accessing individual elements:  ");
        for(String animal : animals) {
            System.out.print(animal);
            System.out.print(", ");
        }
    }
}

输出

ArrayList: [Cow, Cat, Dog]
Accessing individual elements:
Cow, Cat, Dog,

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


获取ArrayList的长度

为了获得数组列表的长度,我们使用size()方法。例如,

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList animals= new ArrayList<>();

        // Adding elements in the arrayList
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        System.out.println("ArrayList: " + animals);

        // getting the size of the arrayList
        System.out.println("Size: " + animals.size());
    }
}

输出

ArrayList: [Dog, Horse, Cat]
Size: 3

排序ArrayList的元素

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

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

import java.util.ArrayList;
import java.util.Collections;

class Main {
    public static void main(String[] args){
        ArrayList animals= new ArrayList<>();

        // Add elements in the array list
        animals.add("Horse");
        animals.add("Zebra");
        animals.add("Dog");
        animals.add("Cat");

        System.out.println("Unsorted ArrayList: " + animals);

        // Sort the array list
        Collections.sort(animals);
        System.out.println("Sorted ArrayList: " + animals);
    }
}

输出

Unsorted ArrayList: [Horse, Zebra, Dog, Cat]
Sorted ArrayList: [Cat, Dog, Horse, Zebra]

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


Java ArrayList到数组

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

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList animals= new ArrayList<>();

        // Add elements in the array list
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("ArrayList: " + animals);

        // Create a new array of String type
        String[] arr = new String[animals.size()];

        // Convert ArrayList into an array
        animals.toArray(arr);
        System.out.print("Array: ");
        for(String item:arr) {
            System.out.print(item+", ");
        }
    }
}

输出

ArrayList: [Dog, Cat, Horse]
Array: Dog, Cat, Horse,

Java 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 = {"Dog", "Cat", "Horse"};
        System.out.print("Array: ");

        // Print array
        for(String str: arr) {
            System.out.print(str);
            System.out.print(" ");
        }

        // Create an ArrayList from an array
        ArrayList animals = new ArrayList<>(Arrays.asList(arr));
        System.out.println("\nArrayList: " + animals);
    }
}

输出

Array: Dog, Cat, Horse
ArrayList: [Dog, Cat, Horse]

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

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


Java ArrayList转换为字符串

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

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList animals = new ArrayList<>();

        // Add elements in the ArrayList
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("ArrayList: " + animals);

        // Convert ArrayList into an String
        String str = animals.toString();
        System.out.println("String: " + str);
    }
}

输出

ArrayList: [Dog, Cat, Horse]
String: [Dog, Cat, Horse]

注意: toString()将整个数组列表转换为单个String


其他ArrayList方法
Methods Descriptions
clone() Creates a new array list with the same element, size, and capacity.
contains() Searches the array list for the specified element and returns a boolean result.
ensureCapacity() Specifies the total element the array list can contain.
isEmpty() Checks if the array list is empty.
indexOf() Searches a specified element in an array list and returns the index of the element.
trimToSize() Reduces the capacity of an array list to its current size.