Cách thêm phần tử vào mảng Java

Trong hướng dẫn này, chúng ta sẽ xem xét ngắn gọn những điểm tương đồng và khác biệt trong việc cấp phát bộ nhớ giữa các mảng Java và ArrayList tiêu chuẩn. Hơn nữa, chúng ta sẽ xem cách nối và chèn các phần tử trong một mảng và ArrayList

2. Mảng Java và ArrayList

Mảng Java là một cấu trúc dữ liệu cơ bản được cung cấp bởi ngôn ngữ. Ngược lại, ArrayList là một triển khai của giao diện List được hỗ trợ bởi một mảng và được cung cấp trong Java Collections Framework

2. 1. Truy cập và sửa đổi các phần tử

Chúng ta có thể truy cập và sửa đổi các phần tử mảng bằng cách sử dụng ký hiệu dấu ngoặc vuông

System.out.println[anArray[1]];
anArray[1] = 4;

Mặt khác, ArrayList có một tập hợp các phương thức để truy cập và sửa đổi các phần tử

int n = anArrayList.get[1];
anArrayList.set[1, 4];

2. 2. Kích thước cố định so với kích thước động

Cả mảng và ArrayList đều phân bổ bộ nhớ heap theo cách tương tự, nhưng điểm khác biệt là mảng có kích thước cố định, trong khi kích thước của ArrayList tăng động

Vì một mảng Java có kích thước cố định, chúng tôi cần cung cấp kích thước trong khi khởi tạo nó. Không thể tăng kích thước của mảng sau khi nó đã được khởi tạo. Thay vào đó, chúng ta cần tạo một mảng mới với kích thước đã điều chỉnh và sao chép tất cả các phần tử từ mảng trước đó

ArrayList là một triển khai mảng có thể thay đổi kích thước của giao diện Danh sách - nghĩa là ArrayList phát triển linh hoạt khi các phần tử được thêm vào nó. Khi số phần tử hiện tại [bao gồm cả phần tử mới được thêm vào ArrayList] lớn hơn kích thước tối đa của mảng bên dưới, thì ArrayList sẽ tăng kích thước của mảng bên dưới

Chiến lược tăng trưởng cho mảng bên dưới phụ thuộc vào việc triển khai ArrayList. Tuy nhiên, vì kích thước của mảng bên dưới không thể tăng lên một cách linh hoạt, nên một mảng mới được tạo và các phần tử mảng cũ được sao chép vào mảng mới

Hoạt động thêm có chi phí thời gian khấu hao không đổi. Nói cách khác, việc thêm n phần tử vào ArrayList cần O[n] thời gian

2. 3. Các loại phần tử

Một mảng có thể chứa các kiểu dữ liệu nguyên thủy cũng như không nguyên thủy, tùy thuộc vào định nghĩa của mảng. Tuy nhiên, một ArrayList chỉ có thể chứa các kiểu dữ liệu không nguyên thủy

Khi chúng ta chèn các phần tử có kiểu dữ liệu nguyên thủy vào một ArrayList, trình biên dịch Java sẽ tự động chuyển đổi kiểu dữ liệu nguyên thủy thành lớp bao bọc đối tượng tương ứng của nó

Bây giờ chúng ta hãy xem cách nối và chèn các phần tử trong mảng Java và ArrayList

3. Nối thêm một phần tử

Như chúng ta đã thấy, mảng có kích thước cố định

Vì vậy, để nối thêm một phần tử, trước tiên, chúng ta cần khai báo một mảng mới lớn hơn mảng cũ và sao chép các phần tử từ mảng cũ sang mảng mới tạo. Sau đó, chúng ta có thể nối thêm phần tử mới vào mảng vừa tạo này

Hãy xem cách triển khai nó trong Java mà không sử dụng bất kỳ lớp tiện ích nào

public Integer[] addElementUsingPureJava[Integer[] srcArray, int elementToAdd] {
    Integer[] destArray = new Integer[srcArray.length+1];

    for[int i = 0; i < srcArray.length; i++] {
        destArray[i] = srcArray[i];
    }

    destArray[destArray.length - 1] = elementToAdd;
    return destArray;
}

Ngoài ra, lớp Arrays cung cấp một phương thức tiện ích copyOf[], hỗ trợ tạo một mảng mới có kích thước lớn hơn và sao chép tất cả các phần tử từ mảng cũ

int[] destArray = Arrays.copyOf[srcArray, srcArray.length + 1];

Khi chúng ta đã tạo một mảng mới, chúng ta có thể dễ dàng thêm phần tử mới vào mảng

destArray[destArray.length - 1] = elementToAdd;

Mặt khác, việc thêm một phần tử vào ArrayList khá dễ dàng

anArrayList.add[newElement];

4. Chèn một phần tử vào chỉ mục

Chèn thêm một phần tử vào một chỉ số cho trước mà không làm mất đi các phần tử đã thêm trước đó không phải là một công việc đơn giản trong mảng

Trước hết, nếu mảng đã chứa số phần tử bằng với kích thước của nó, thì trước tiên chúng ta cần tạo một mảng mới có kích thước lớn hơn và sao chép các phần tử sang mảng mới

Hơn nữa, chúng ta cần dịch chuyển tất cả các phần tử xuất hiện sau chỉ mục đã chỉ định sang phải một vị trí

public static int[] insertAnElementAtAGivenIndex[final int[] srcArray, int index, int newElement] {
    int[] destArray = new int[srcArray.length+1];
    int j = 0;
    for[int i = 0; i < destArray.length-1; i++] {

        if[i == index] {
            destArray[i] = newElement;
        } else {
            destArray[i] = srcArray[j];
            j++;
        }
    }
    return destArray;
}

Tuy nhiên, lớp ArrayUtils cung cấp cho chúng ta một giải pháp đơn giản hơn để chèn các phần tử vào một mảng

int[] destArray = ArrayUtils.insert[2, srcArray, 77];

Chúng ta phải chỉ định chỉ mục mà chúng ta muốn chèn giá trị, mảng nguồn và giá trị để chèn

Phương thức insert[] trả về một mảng mới chứa số lượng phần tử lớn hơn, với phần tử mới ở chỉ mục đã chỉ định và tất cả các phần tử còn lại dịch chuyển một vị trí sang phải

Lưu ý rằng đối số cuối cùng của phương thức insert[] là một đối số biến, vì vậy chúng ta có thể chèn bất kỳ số lượng phần tử nào vào một mảng

Hãy sử dụng nó để chèn ba phần tử trong srcArray bắt đầu từ chỉ mục hai

________số 8

Và các phần tử còn lại sẽ được dịch chuyển ba vị trí sang phải

Hơn nữa, điều này có thể đạt được một cách tầm thường đối với ArrayList

anArrayList.add[index, newElement];

ArrayList dịch chuyển các phần tử và chèn phần tử vào vị trí cần thiết

5. Phần kết luận

Trong bài viết này, chúng ta đã xem xét mảng Java và ArrayList. Hơn nữa, chúng tôi đã xem xét những điểm tương đồng và khác biệt giữa hai. Cuối cùng, chúng ta đã thấy cách nối và chèn các phần tử trong một mảng và ArrayList

Bạn có thể thêm một phần tử vào một mảng không?

Khi bạn muốn thêm một phần tử vào cuối mảng của mình, hãy sử dụng hàm push[] . Nếu bạn cần thêm một phần tử vào đầu mảng của mình, hãy sử dụng unshift[]. Nếu bạn muốn thêm một phần tử vào một vị trí cụ thể của mảng, hãy sử dụng splice[].

Bạn có thể thêm nhiều phần tử vào một mảng trong Java không?

Mảng Java có kích thước cố định. Bạn không thể nối các phần tử trong một mảng . Thay vào đó, chúng ta có thể sử dụng một đối tượng ArrayList để triển khai giao diện Danh sách.

Làm cách nào để thêm các phần tử vào một mảng trong Java một cách linh hoạt?

Để thêm phần tử vào mảng động, chúng ta dùng hàm add[] . Giải trình. Chúng tôi đã tạo một ArrayList tôi. e. , một mảng động và thêm các phần tử vào nó. Chúng ta có thể thấy rằng sau khi các phần tử được thêm vào, kích thước của mảng động sẽ tăng lên.

Chủ Đề