Caách sử dụng arraylist so sánh trong java

Array(mảng) được biết đến là cấu trúc dữ liệu được sử dụng phổ biến trong lập trình Java cũng như các ngôn ngữ lập trình khác. Tuy nhiên mảng cũng có những nhược điểm mà không phải lập trình viên nào cũng có thể chấp nhận chịu đựng và gắn bó sử dụng. Trong bài viết này mình và các bạn sẽ tìm hiểu về lớp ArrayList và tại sao nó lại là một sự thay thế cho mảng trong java.

1. ArrayList là gì?

ArrayList là một phần của Collection framework và được chứa trong gói java.util. ArrayList cung cấp cho người dùng một mảng động(kích thước thay đổi), mặc dù nó có thể chậm hơn so với mảng thông thường trong Java nhưng nó cho phép lập trình viên lưu trữ và thao tác với một lượng lớn dữ liệu.

Caách sử dụng arraylist so sánh trong java

Ngoài ra ArrayList cung cấp nhiều thao tác có sẵn cho lập trình viên, chúng ta sẽ tìm hiểu về các thao tác ở mục 2 của bài viết.

Sau đây là một chương trình java đơn giản với ArrayList:

import java.util.ArrayList;
public class ArrayListDemo {
    public static void main(String[] args) {
        ArrayList arr = new ArrayList<>();
        arr.add(1);
        arr.add(2);
        arr.add(3);
        int len = arr.size();
        for(int i=0; i

Output:

Caách sử dụng arraylist so sánh trong java

Như đã nói ở trên ArrayList giống như một mảng động nên ta không nhất thiết phải khai báo kích thước trong qua trình tạo. Để tạo một ArrayList ta có thể sử dụng các Constructors sau:

ArrayList(): đây là contructor được sử dụng phổ biến, nó trả về kết quả là một một mảng rỗng.

ArrayList arr = new ArrayList();

ArrayList(Collection c): tạo mảng từ một collection khác

ArrayList arr = new ArrayList(new LinkedList());

ArrayList(int length): tạo ra một mảng với kích thước là length, được sử dụng trong tường hợp người dùng đã xác định được lượng dữ liệu cần thêm vào mảng, việc này giúp giảm bớt thời gian cấp phát lại bộ nhớ trong quá trình chạy chương trình.

ArrayList arr = new ArrayList(9);

2. Các thao tác cơ bản với một ArrayList

Thêm phần tử: để thêm một phần tử vào mảng ta sử dụng phương thức add() với hai cách truyền tham số đầu vào sau:

  • add(Object): thêm Object vào cuối mảng.
  • add(int index, Object): thêm Object vào vị trí index trong mảng.

import java.util.ArrayList;
public class ArrayListDemo {
    public static void main(String[] args) {
        ArrayList arr = new ArrayList<>();
        arr.add(1);
        arr.add(2);
        arr.add(3);
        arr.add(1,4);
        int len = arr.size();
        for(int i=0; i

Output:

Caách sử dụng arraylist so sánh trong java

Thay đổi phần tử: được thực hiện bởi phương thức set() với hai tham số đầu vào là vị trí của phần tử muốn thay đổi và giá trị mới của phần tử.

public static void main(String[] args) {
        ArrayList arr = new ArrayList<>();
        arr.add(1);
        arr.add(2);
        arr.add(3);
        arr.set(2, 4);
        int len = arr.size();
        for(int i=0; i

Output:

Caách sử dụng arraylist so sánh trong java

Xóa phần tử: để xóa một phần tử arraylist ta có thể sử dụng phương thức remove() với hai cách truyền tham số đầu vào sau:

  • remove(Object): xóa các phần tử có giá trị giống với Object, nếu có nhiều giá trị giống nhau thì sẽ xóa phần tử đầu tiên.
  • remove(int index): xóa phần tử tại vị trí index, các phần tử phía sau index bị xóa sẽ được xê dịch để lấp khoảng trống đã xóa.

public static void main(String[] args) {
        ArrayList arr = new ArrayList<>();
        arr.add(1);
        arr.add(2);
        arr.add(3);
        arr.add(4);
        arr.add(3);
        arr.remove(new Integer(3) );
        arr.remove(0);
        int len = arr.size();
        for(int i=0; i

Output:

Caách sử dụng arraylist so sánh trong java

Duyệt mảng ArrayList: có nhiều cách để duyệt mảng nhưng cách phổ biến nhất là dùng hàm for().

int len = arr.size();
for(int i=0; i

Ngoài ra còn có thể dùng với foreach loop:

public static void main(String[] args) {
        ArrayList arr = new ArrayList<>();
        arr.add(1);
        arr.add(2);
        arr.add(3);
        arr.add(4);
        arr.add(3);
        for(Integer element : arr){
            System.out.print(element + ", ");
        }
}

Output:

Caách sử dụng arraylist so sánh trong java

3. Vì sao ArrayList được sử dụng thay thế cho mảng?

Array(mảng) và ArrayList được sử dụng trong quá trình phát triển ứng dụng Java, cả hai đều được sử dụng để lưu trữ dữ liệu nhưng tại sao chúng ta nên sử dụng ArrayList để thay thế cho mảng thông thường?

Trước hết, chúng ta cầm xem lại một vài nhược điểm điển hình của mảng thông thường trong Java:

  • Kích thước mảng cố định và không thể thay đổi sau khi mảng được tạo.
  • Không thể thêm phần tử sau khi mảng đã đầy.
  • Việc thêm và xóa phần tử giữa mảng gây nhiều khó khăn.

Sau đây là những lý do nên dùng ArrayList:

  • Kích thước của ArrayList có thể thay đổi tăng hoặc giảm tùy vào số lượng phần tử trong nó.
  • Thêm và xóa phần tử ở bất kì vị trí nào trong mảng một cách nhanh chóng, hiệu quả.
  • Có nhiều phương thức hỗ trợ các thao tác như removeAll-xóa tất cả, searching-tìm kiếm, iterations-duyệt mảng, retainAll-sửa phần tử,…
  • Một ArrayList có thể chứa nhiều loại đối tượng như Integer, String, Scanner, hay một đối tượng do người dùng tự khai báo.

Kết

Hy vọng bài viết giúp bạn giải đáp được câu hỏi đầu bài viết cũng như bổ sung cho mình những kiến thức hữu ích. Nếu bài viết có ý nghĩa hãy để lại đánh giá cũng như comment giúp phát triển bài viết tốt hơn. Cảm ơn bạn đọc!