ArrayList trong java với ví dụ cụ thể

ArrayList là một class implement từ interface List và dựa trên Array data structure. ArrayList được sử dụng rất nhiều trong java bởi các chức năng và tính linh hoạt của nó.

ArrayListlà một mảng động có thể thay đổi cách thích tuỳ thuộc vào số lượng phần tử được thêm vào hoặc xoá đi.

Sơ đồ thừa kế

Sử dụng Array hay ArrayList?

Array là một mảng các số lượng phần tử cố định, nghĩa rằng bạn sẽ  không thể thêm bất kỳ phần tử nào vào Array nếu nó đã chứa đầy phần tử. Mặc khác, nếu bạn xoá một phần tử trong Array vẫn sẽ không co lại và vẫn tốn một lượng memory như vậy.

ArrayList là một mảng các các phần tử linh động, nó có thể tăng hoặc giảm kích thước khi bạn thêm hoặc xoá các phần tử trong mảng. Ngoài ra nó còn cung cấp các method giúp chúng ta dễ dàng thao tác với mảng phần tử hơn.

Các bạn hãy tưởng tượng nếu cần thêm hoặc xoá một phần tử tại vị trí index trong Array, thì chúng ta sẽ có nhiều việc để làm lắm đấy. Và tưởng tượng các bạn sẽ phải lặp đi lặp lại các bước như vậy khi cần thao tác với mảng thì thật là khó chịu đúng không nào?

Minh hoạ thêm phần tử

add element to arraylist

Minh hoạ xoá phần tử


remove element arraylist

 

Khởi tạo một ArrayList

// Cách 1
ArrayList<Kiểu dữ liệu> <name> = new ArrayList<>();

// Cách 2
List<Kiểu dữ liệu> <name> = new ArrayList<>();

Kiểu dữ liệu dùng để xác định các thành phần có thể có trong ArrayListVí dụ

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

Chúng ta sẽ một ArrayList với các phần tử có kiểu String

Note: Các kiểu dữ liệu nguyên thuỷ không được phép trong ArrayList.

List<int> arrs = new ArrayList<>(); => Error

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

Để thêm một phần tử vào một ArrayListchúng ta sử dụng method add().

// add the element at the end ArrrayList
strs.add("deftBlog");

// add the element at specified index
strs.add(5, "milo");

Ví dụ

import java.util.*;

public class Main {

    public static void main(String[] args) {
        List<String> strs = new ArrayList<>();

        strs.add("str 0");
        strs.add("str 1");
        strs.add("str 2");
        strs.add("str 3");
        System.out.println(strs);

        strs.add(2, "deft");
        System.out.println(strs);
    }
}

Output

[str 0, str 1, str 2, str 3]
[str 0, str 1, deft, str 2, str 3]

Xoá phần tử trong ArrayList

import java.util.*;

public class Main {

    public static void main(String[] args) {
        List<String> strs = new ArrayList<>();

        strs.add("str 0");
        strs.add("str 1");
        strs.add("str 2");
        strs.add("str 3");
        System.out.println(strs);

        // remove by value
        strs.remove("str 0");
        System.out.println(strs);

        // remove by index
        strs.remove(2);
        System.out.println(strs);
    }
}

output

[str 0, str 1, str 2, str 3]
[str 1, str 2, str 3]
[str 1, str 2]

Duyệt các phần tử trong ArrayList

Để duyệt các phần tử trong ArrayList chúng ta có 3 cách chính:

  • Vòng lặp For
  • Vòng lặp for rút gọn
  • ForEach

Sau đây, chúng ta cần đi qua từng cách để xem cú pháp và cách sử dụng của chúng.

Array For

Đây có lẽ là cách quen thuộc tính nhất đối với các bạn mới bắt đầu học Java. Vì cú pháp này các bạn đã được tiếp xúc ngay từ đầu học Java,

import java.util.*;

public class Main {
    public static void main(String args[]) {
        ArrayList<String> alist = new ArrayList<>();
        alist.add("Gregor Clegane");
        alist.add("Khal Drogo");
        alist.add("Cersei Lannister");
        alist.add("Sandor Clegane");
        alist.add("Tyrion Lannister");

        for(int i = 0; i < alist.size(); i++) {
            System.out.println(alist.get(i));
        }
    }
}

Output

Gregor Clegane
Khal Drogo
Cersei Lannister
Sandor Clegane
Tyrion Lannister

ArrayList – For rút gọn

Tuy nhiên, các bạn có thể thấy rằng, việc phải khai báo biến i để giữ Index trong ArrayList là điều không cần thiết. Do vậy 

import java.util.*;

public class Main {
    public static void main(String args[]) {
        ArrayList<String> alist = new ArrayList<>();
        alist.add("Gregor Clegane");
        alist.add("Khal Drogo");
        alist.add("Cersei Lannister");
        alist.add("Sandor Clegane");
        alist.add("Tyrion Lannister");

        //iterating ArrayList
        for (String str : alist) {
            System.out.println(str);
        }
    }
}

ArrayList – ForEach

Ngoài ra thì ArrayList cũng cung cấp forEach method cho phép duyệt các phần tử.

import java.util.*;

public class Main {
    public static void main(String args[]) {
        ArrayList<String> alist = new ArrayList<>();
        alist.add("Gregor Clegane");
        alist.add("Khal Drogo");
        alist.add("Cersei Lannister");
        alist.add("Sandor Clegane");
        alist.add("Tyrion Lannister");
        alist.forEach(str -> System.out.println(str));
    }
}

Các method trong ArrayList

Chúng ta đã tìm hiểu sơ cách ArrayList hoạt động. Ngoài các method cho phép thêm và xoá phần tử thì ArrayList còn cung cấp những method khác giúp cho việc lập trình chúng ta trở nên dễ dàng hơn. Hãy Xem qua và nhớ những method này giải giải quyết cho chúng ta vấn đề gì, chứ không cần học thuộc lòng vì IDE hiện giờ đều có các chức năng gợi ý cho bạn. 

1, boolean add(Object o): Thêm một phần tử vào ArrayList

obj.add("deft");

2, boolean add(int index, Object o): Thêm một phần tử vào vị trí index. Nếu index không hợp lệ chúng ta sẽ nhận lại một IndexOutOfBoundsException.

obj.add(2, "deft");

3, boolean remove(Object o): Xoá object o khỏi ArrayList, object o này phải chứa trong ArrayList.

obj.remove("deft");

4, boolean remove(int index): Xoá một phần tử tại vị trí index, nếu index không hợp lệ chúng ta sẽ nhận IndexOutOfBoundsException.

obj.remove(3);

5, Object set(int index, Object o): Cập nhật phần tử tại vị trí index, nếu index không hợp lệ chúng ta sẽ nhận IndexOutOfBoundsException.

obj.set(3, "update");

6, int indexOf(Object o): Lấy vị trí index của object o trong ArrayList, nếu object o không chứa trong ArrayList nhận kết -1.

int pos = obj.indexOf("deft);

7, Object get(int index): Return object tại vị trí index trong ArrayList.

String str = obj.get(3);

8, int size(): lấy số lượng phần tử chứa trong ArrayList

int size = obj.size();

9, boolean contains(Object o): Kiểm tra phần tử object o có chứa trong ArrayList, nếu có return true, ngược lại false.

boolean isExist = obj.contains("deft");

10, void clear(): Xoá tất cả các phần tử trong ArrayList

obj.clear();

11, int lastIndexOf(): Lấy vị trí xuất hiện cuối cùng của phần tử.

Danh sách các bài viết về ArrayList

ArrayList cơ bản

ArrayList sorting

ArrayList searching

ArrayList with Stream API

Nguồn tham khảo

https://www.geeksforgeeks.org/arraylist-in-java/

ArrayList in java with example programs – Collections Framework

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x