Trong hướng dẫn này, chúng ta sẽ tìm hiểu về class ArrayList trong. Chúng ta sẽ tìm hiểu về các toán tử và hàm ArrayList khác nhau qua các ví dụ.

Class ArrayList triển khai List interface mà cho phép chúng ta tạo ra các mảng có thể thay đổi kích thước.

Mảng và ArrayList trong Java

Trong Java, chúng ta cần khai báo độ dài của một mảng trước khi sử dụng. Khi đã khai báo kích thước của một mảng rồi thì rất khó để thay đổi kích thước đó.

Để xử lý vấn đề này, chúng ta có thể sử dụng lớp ArrayList. Các lớp ArrayList có mặt trong gói java.util cho phép chúng ta tạo ra các mảng có thể thay đổi kích thước.

Không giống như mảng, ArrayList (đối tượng của class ArrayList) có thể tự động điều chỉnh kích cỡ của nó khi chúng ta thêm vào hoặc xóa đi các phần tử. Do đó, ArrayList còn được gọi là mảng động.

1. Tạo một ArrayList

Sau đây là cách chúng ta có thể tạo ArrayList trong Java:

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

Ở đây, Type là kiểu dữ liệu của ArrayList mà ta muốn tạo. Ví dụ,

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

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

Chương trình trên đã sử dụng kiểu dữ liệu Integer và String. Ở đây, Integer là class bao bọc trương ứng của kiểu dữ liệu int.

Một class bao bọc là một class đóng gói một kiểu dữ liệu cơ bản. Ví dụ, class Integer bao bọc kiểu int, class Float bao bọc kiểu float, v.v.

Lưu ý:  không thể tạo danh sách các mảng thuộc kiểu dữ liệu cơ bản như int, float, char, v.v Thay vào đó, ta phải sử dụng class bao bọc tương ứng của chúng.

Đối với chuỗi, String là một class. Do đó, chúng ta sử dụng class String như một class bao bọc của nó luôn.

Chúng ta cũng có thể tạo ArrayList bằng List interface. Đó là bởi vì class ArrayList triển khai List interface.

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

Các hàm của ArrayList

ArrayList cung cấp các hàm khác nhau cho phép chúng ta thực hiện các toán tử trên Arraylist.

2. Thêm phần tử vào ArrayList

1. Sử dụng hàm add ()

Để thêm một phần tử vào ArrayList, chúng ta sử dụng hàm add(). Ví dụ,

import java.util.ArrayList;

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

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

Kết quả

ArrayList: [Dog, Cat, Horse]

Sử dụng chỉ số

Chúng ta cũng có thể thêm nhiều phần tử vào một ArrayList bằng cách sử dụng các chỉ số. Ví dụ,

import java.util.ArrayList;

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

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

Kết quả

ArrayList: [Dog, Cat, Horse]

Thêm các phần tử từ ArrayList này vào ArrayList khác

Để thêm tất cả các phần tử của ArrayList này vào một ArrayList mới, chúng ta sử dụng hàm addAll(). Ví dụ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.ArrayList;

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

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

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

Kết quả

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

3. Khởi tạo một ArrayList bằng cách sử dụng hàm asList()

Khác với mảng, chúng ta không thể khởi tạo ArrayList một cách trực tiếp. Tuy nhiên, chúng ta có thể sử dụng hàm asList() của class Arrays để làm điều đó.

Để sử dụng hàm asList() này, đầu tiên, chúng ta phải nhập gói java.util.Arrays.

Ví dụ,

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

class Main {
    public static void main(String[] args) {
        // Creating an array list
        ArrayList<String> 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);
    }
}

Kết quả

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

Trong ví dụ trên, hãy chú ý biểu thức:

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

Ở đây, trước tiên chúng ta tạo ra một mảng gồm 3 phần tử:”Cat”, “Cow” và “Dog”. Sau đó, hàm asList() được sử dụng để chuyển đổi mảng thành một ArrayList.

Để tìm hiểu thêm về các cách khác nhau để khởi tạo một ArrayList, hãy truy cập: Khởi tạo một ArrayList trong một Dòng

4. Truy cập tới các phần tử trong ArrayList

1. Sử dụng hàm get ()

Để truy cập ngẫu nhiên các phần tử của ArrayList, chúng ta sử dụng hàm get(). Ví dụ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

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("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);
    }
}

Kết quả

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

2. Sử dụng hàm iterator()

Để truy cập các phần tử của ArrayList một cách tuần tự, chúng ta sử dụng hàm iterator(). Chúng ta phải nhập gói java.util.Iterator để sử dụng hàm này. Ví dụ,

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

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");
        animals.add("Zebra");

        // Create an object of Iterator
        Iterator<String> 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(", ");
        }
    }
}

Kết quả

ArrayList: Dog, Cat, Horse, Zebra,

Lưu ý :

Hàm hasNext() trả về true nếu có một phần tử tiếp theo trong ArrayList.

Hàm next() trả về phần tử tiếp theo trong ArrayList.

5. Thay đổi các phần tử trong ArrayList

Để thay đổi các phần tử của ArrayList, chúng ta có thể sử dụng hàm set(). Ví dụ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

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);

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

Kết quả

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

6. Xóa các phần tử trong ArrayList

1. Sử dụng hàm remove ()

Để loại bỏ một phần tử khỏi ArrayList, chúng ta có thể sử dụng hàm remove(). Ví dụ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

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("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);
    }
}

Kết quả

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

2. Sử dụng hàm removeAll ()

Để loại bỏ tất cả các phần tử khỏi ArrayList, chúng ta sử dụng hàm removeAll(). Ví dụ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<String> 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);
    }
}

Kết quả

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

3. Sử dụng hàm Clear ()

Chúng ta cũng có thể sử dụng hàm clear() để loại bỏ tất cả các phần tử khỏi ArrayList. Ví dụ,

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("Initial ArrayList: " + animals);

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

Kết quả

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

Lưu ý: Dùng hàm clear() sẽ hiệu quả hơn so với hàm removeAll().

7. Lặp qua một ArrayList

1. Sử dụng vòng lặp for

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

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);

        // 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(", ");
        }
    }
}

Kết quả

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

2. Sử dụng vòng lặp forEach

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

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);

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

Kết quả

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

Trong cả hai ví dụ, chúng ta đã truy cập các phần tử riêng lẻ của một ArrayList bằng cách sử dụng các vòng lặp.

8. Xem độ dài ArrayList

Để có được độ dài của ArrayList, chúng ta sử dụng hàm size(). Ví dụ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<String> 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());
    }
}

Kết quả

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

9. Sắp xếp các phần tử của một ArrayList

Để sắp xếp các phần tử của một ArrayList, chúng ta sử dụng hàm sort() của class Collections. Để sử dụng nó, trước tiên, chúng ta phải nhập gói java.util.Collections.

Theo mặc định, việc sắp xếp xảy ra theo thứ tự bảng chữ cái hoặc thứ tự sốtheo chiều tăng dần. Ví dụ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

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

class Main {
    public static void main(String[] args){
        ArrayList<String> 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);
    }
}

Kết quả

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

Để tìm hiểu thêm về cách sắp xếp ArrayList, hãy truy cập sắp xếp Java ArrayList.

10. Chuyển ArrayList thành Array trong Java

Trong Java, chúng ta có thể chuyển đổi ArrayList thành mảng bằng hàm toArray(). Ví dụ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

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);

        // 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+", ");
        }
    }
}

Kết quả

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

11. Chuyển mảng thành ArrayList trong Java

Chúng ta cũng có thể chuyển đổi mảng thành ArrayList. Để làm điều đó, chúng ta có thể sử dụng hàm asList()của class Array.

Để sử dụng hàm asList(), trước tiên, chúng ta phải nhập gói java.util.Arrays. Ví dụ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

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<String> animals = new ArrayList<>(Arrays.asList(arr));
        System.out.println("\nArrayList: " + animals);
    }
}

Kết quả

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

Trong chương trình trên, đầu tiên chúng ta tạo một mảng arr thuộc kiểu String.

Sau đó chúng ta chuyển đổi mảng thành một ArrayList bằng hàm asList().

12. Chuyển ArrayList thành String trong Java

Để chuyển đổi một Java thành String, chúng ta có thể sử dụng hàm toString(). Ví dụ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<String> 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);
    }
}

Kết quả

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

Lưu ý: hàm toString() chuyển đổi toàn bộ ArrayList thành một String.

12. Các hàm ArrayList khác

HàmMô tả
clone()Tạo một ArrayList mới với cùng phần tử, kích thước và dung lượng.
contains()Tìm kiếm ArrayList cho phần tử đã chỉ định và trả về kết quả boolean.
ensureCapacity() Chỉ định tổng phần tử mà ArrayList có thể chứa.
isEmpty()Kiểm tra nếu ArrayList trống.
indexOf()Tìm kiếm một phần tử được chỉ định trong ArrayList và trả về chỉ số của phần tử.
trimToSize()Giảm dung lượng của một ArrayList về kích thước hiện tại của nó.

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!