Thêm phần tử vào mảng trong Java | Laptrinhcanban.com

Thêm phần tử vào mảng trong Java

Hướng dẫn cách thêm phần tử vào mảng trong Java. Bạn sẽ học được 2 cách cơ bản để thêm một phần tử vào mảng trong java sau bài học này.

Chúng ta có 2 phương pháp để thêm phần tử vào mảng trong Java như sau:

  • Thêm phần tử vào mảng trong Java bằng ArrayList
  • Thêm phần tử vào mảng trong Java bằng cách tạo một mảng mới

Có thể thêm phần tử vào mảng trong Java?

Thêm phần tử vào mảng trong Java, là xử lý nhằm thêm một phần tử vào cuối một mảng có sẵn.

Tuy nhiên mảng trong Java có kích thước cố định được quyết định khi khai báo mảng, và chúng ta không thể thay đổi kích thước của mảng sau khi khai báo. Do vậy về lý thuyết thì chúng ta không thể thêm phần tử vào mảng ban đầu được vì không thể làm tăng độ dài của mảng đó.

Thật vậy. Giả sử chúng ta khai báo một mảng có 5 phần tử và gán giá trị cho các phần tử như sau:

String[] arr = new String[5];
arr[0] = "1";
arr[1] = "2";
arr[2] = "3";
arr[3] = "4";
arr[4] = "5";

Nếu chúng ta cố thêm một phần tử thứ 6 vào mảng đó, thì do sẽ vượt quá kích thước của mảng, dẫn đến lỗi sẽ xảy ra như sau:

arr[6] = 6;


>>> java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 5

Bởi thế, để thêm phần tử vào một mảng, thì thay vì thêm trực tiếp phần tử và thay đổi kích thước mảng đó (là việc không thể) thì chúng ta cần phải chuẩn bị một mảng có kích thước lớn hơn để có thể chứa cả mảng ban đầu lẫn phần tử cần thêm vào.

Và chúng ta sẽ có 2 cách cơ bản để thêm phần tử vào mảng trong Java dựa trên logic ở trên như sau.

Thêm phần tử vào cuối mảng trong Java bằng ArrayList

Khác với mảng thì ArrayList trong Java có độ dài không cố định và chúng ta có thể dễ dàng thêm phần tử vào một ArrayList đã tạo trước đó.

Ứng dụng ArrayList, chúng ta có thể chuyển mảng cần thêm phần tử thành ArrayList, sau đó thao tác thêm phần tử trực tiếp trên ArrayList này, thì sẽ hoàn thành được việc thêm phần tử vào mảng trong Java.

Và để thêm phần tử vào một ArrayList sẵn có, chúng ta sử dụng phương thức add() với cú pháp sau đây:

l.add(element);

Trong đó l là tên ArrayList, và element là giá trị của phần tử cần thêm vào.

Ví dụ cụ thể, chúng ta chuyển mảng thành ArrayList, sau đó thêm phần tử vào cuối ArrayList đó như chương trình sau đây:

import java.util.*;

public class Main {
public static void main(String args[]) {
// Tạo mảng
String[] arr = {"1", "2" , "3", "4", "5"};
// In mảng ban đầu
System.out.println("orgin arr:\n"+Arrays.toString(arr));

// Chuyển mảng thành ArrayList
List<String> testList = new ArrayList<>(Arrays.asList(arr));

// In ArrayList vừa tạo
System.out.println("ArrayList before:\n"+ testList);

// Thêm phần tử vào cuối ArrayList
testList.add("88");
testList.add("99");

// In ArrayList sau khi thêm phần tử
System.out.println("ArrayList after:\n"+ testList);

// Chuyển ArrayList trở về Array và lưu vào mảng kết quả
arr = testList.toArray(new String[0]);

// In mảng kết quả
System.out.println("new arr :\n"+Arrays.toString(arr));

}
}

Kết quả, hai phần tử là “88” và “99” sẽ được thêm vào cuối mảng kết quả như sau:

orgin arr:
[1, 2, 3, 4, 5]
ArrayList before:
[1, 2, 3, 4, 5]
ArrayList after:
[1, 2, 3, 4, 5, 88, 99]
new arr :
[1, 2, 3, 4, 5, 88, 99]

Lưu ý là ở trên mặc dù chúng ta sử dụng chung tên một biến mảng arr, nhưng biến mảng này tham chiếu tới 2 mảng hoàn toàn khác nhau trước và sau khi thêm phần tử. Bạn có thể tham khảo kỹ phần này tại bài viết Gán mảng cho một mảng khác trong Java.

Thêm phần tử vào mảng trong Java bằng cách tạo một mảng mới

Nếu bạn không muốn dùng ArrayList mà chỉ muốn thao tác trong phạm vi mảng, chúng ta vẫn còn một cách khác để thêm 1 phần tử vào mảng trong Java, đó chính là tạo một mảng mới có độ dài đủ để chứa cả mảng ban đầu lẫn phần tử cần thêm, sau đó copy toàn bộ mảng ban đầu cũng như phần tử cần thêm vào nó.

Để copy mảng, chúng ta sẽ dùng đển phương thức Arrays.copyOf mà Kiyoshi đã hướng dẫn trong bài Sao chép mảng trong Java

Ví dụ, với mảng ở trên chúng ta có thể tiến hành thêm một phần tử vào mảng như sau:

import java.util.*;

public class Main {
public static void main(String args[]) {
// Tạo mảng
String[] arr = {"1", "2" , "3", "4", "5"};

// In mảng ban đầu
System.out.println("Old arr:\n"
+ Arrays.toString(arr));

// Lấy độ dài mảng ban đầu
int N = arr.length;

/*Tạo một mảng mới cùng tên có độ dài N+1 và copy mảng ban đầu */
arr = Arrays.copyOf(arr, N + 1);

//Thêm 1 phần tử vào mảng mới
arr[N] = "6";

// In mảng kết quả
System.out.println("New arr:\n"
+ Arrays.toString(arr));
}
}

Kết quả, 1 phần tử sẽ được thêm vào cuối mảng như sau:

Old arr:
[1, 2, 3, 4, 5]
New arr:
[1, 2, 3, 4, 5, 6]

Tuy nhiên cần lưu ý, để có thể thêm các phần tử khác vào cuối mảng kết quả này thì chúng ta buộc phải lặp lại lần lượt toàn bộ quá trình xử lý ở trên. Lý do là trong mỗi lần thêm phần tử vào cuối mảng bằng phương pháp này, Java sẽ cần tiêu tốn một khoảng thời gian đươc tính toán phức tạp.

Trong khi đó thì phương pháp thêm phần tử vào mảng trong Java bằng ArrayList lại không tốn thời gian như vậy mà chúng ta có thể thêm đồng thời nhiều phần tử vào. Do vậy, chúng ta nên sử dụng tới ArrayList khi muốn thêm phần tử vào mảng trong Java.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách thêm phần tử vào mảng trong Java rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về Java trong các bài học tiếp theo

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.