Xóa mảng trong java | Laptrinhcanban.com

Xóa mảng trong java

Hướng dẫn cách xóa mảng trong Java. Bạn sẽ học được 3 cách cơ bản để xóa phần tử trong mảng trong java sau bài học này.

Chúng ta có 3 phương pháp để xóa phần tử trong mảng trong Java như sau:

  • Xóa 1 phần tử trong mảng trong Java bằng ArrayList
  • Xóa phần tử thứ k trong mảng Java
  • Xóa toàn bộ phần tử chỉ định trong mảng trong Java

Có thể xóa phần tử trong mảng trong Java?

xóa phần tử trong mảng trong Java, là xử lý nhằm xóa một phần tử ở 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ể xóa phần tử trong mảng ban đầu được vì không thể làm giảm độ dài của mảng đó.

Bởi thế, để xóa phần tử trong một mảng, thì thay vì xóa 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 khác có kích thước phù hợp để có thể chứa kết quả xóa phần tử từ mảng ban đầu.

Và chúng ta sẽ có 3 cách cơ bản để xóa phần tử vào mảng trong Java theo logic ở trên như dưới đây.

Xóa một phần tử trong 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 xóa phần tử từ một ArrayList đã tạo trước đó.

Để xóa phần tử trong mảng trong Java bằng ArrayList, chúng ta cần thực hiện các bước sau đây:

  1. Chuyển mảng thành ArrayList

  2. Xóa phần tử trong ArrayList

  3. Chuyển ArrayList lại về mảng

Để xóa phần tử từ một ArrayList sẵn có, chúng ta sử dụng phương thức remove() với cú pháp sau đây:

l.remove(parameter);

Trong đó l là tên ArrayList và parameter là index hoặc là giá trị của phần tử cần xóa.

Lưu ý, nếu chỉ định parameter là một số thuộc kiểu int, thì phần tử có index bằng parameter sẽ được xóa. Nếu chỉ định parameter là một chuỗi thuộc kiểu String, thì phần tử đầu tiên có giá trị bằng parameter sẽ được xóa đi.

Ví dụ, chúng ta có một ArrayList như sau:

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

list.add("HaNoi");
list.add("NinhBinh");
list.add("NamDinh");
list.add("NinhBinh");

// In ArrayList vừa tạo
System.out.println(list); // [HaNoi, NinhBinh, NamDinh, NinhBinh]

Khi chỉ định parameter là index của phần tử, ví dụ như phần tử “NamDinh” có index bằng 2 thì phần tử đó sẽ được xóa đi khỏi ArrayList như sau:

list.remove(2);
System.out.println(list); // [HaNoi, NinhBinh, NinhBinh]

Và nếu chỉ định parameter là giá trị của phần tử đó, thì phần tử đầu tiên được tìm thấy từ đầu ArrayList sẽ được xóa đi khỏi ArrayList như sau:

list.remove("NinhBinh");
System.out.println(list); //[HaNoi, NamDinh, NinhBinh]

Ứng dụng điều này, chúng ta có thể chuyển mảng thành ArrayList, sau đó xóa phần tử đầu tiên được tìm thấy trong ArrayList đó, rồi chuyển lại ArrayList kết quả về mảng để hoàn chỉnh việc xóa mảng trong Java như chương trình sau đây:

import java.util.*;

public class Main {
public static void main(String args[]) {
// Tạo mảng int
String[] arr = {"1", "5" , "3", "4", "2", "5"};
// In mảng ban đầu
System.out.println("Mang ban dau:\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 chua mang:\n"+ testList);

// Xóa phần tử đầu tiên có giá trị bằng 5
testList.remove("5");

// In ArrayList sau khi xóa phần tử
System.out.println("Xoa phan tu co giá tri bang 5 tu ArrayList:\n"+ testList);

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

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

}
}

Kết quả, phần tử đầu tiên có giá trị bằng 5 được tìm thấy sẽ được xóa khỏi mảng ban đầu như sau:

Mang ban dau:
[1, 5, 3, 4, 2, 5]
ArrayList chua mang:
[1, 5, 3, 4, 2, 5]
Xoa phan tu co giá tri bang 5 tu ArrayList:
[1, 3, 4, 2, 5]
Mang ket qua :
[1, 3, 4, 2, 5]

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 xóa 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.

Xóa phần tử thứ k trong mảng java

Cũng với cách sử dụng phương thức remove của ArrayList như trên trong trường hợp chỉ định parameter là index của phần tử, chúng ta có thể xóa phần tử thứ k trong mảng java bằng cách chỉ định parameter bằng chính k.

Ví dụ cụ thể chúng ta xóa phần tử thứ 2 trong mảng java trên như sau:

import java.util.*;

public class Main {
public static void main(String args[]) {
// Tạo mảng int
String[] arr = {"1", "5" , "3", "4", "2", "5"};
// In mảng ban đầu
System.out.println("Mang ban dau:\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 chua mang:\n"+ testList);

// Xóa phần tử thứ 2 trong ArrayList
testList.remove(2);

// In ArrayList sau khi xóa phần tử
System.out.println("Xoa phan tu thu 2 trong ArrayList:\n"+ testList);

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

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

}
}

Kết quả, phần tử có index k = 2 (giá trị bằng 3) sẽ được xóa đi khỏi mảng ban đầu như sau:

Mang ban dau:
[1, 5, 3, 4, 2, 5]
ArrayList chua mang:
[1, 5, 3, 4, 2, 5]
Xoa phan tu thu 2 trong ArrayList:
[1, 5, 4, 2, 5]
Mang ket qua :
[1, 5, 4, 2, 5]

Xóa toàn bộ phần tử chỉ định trong mảng trong Java

Với phương pháp sử dụng ArrayList thuần túy như trên, chúng ta chỉ có thể xóa đi một phần tử duy nhất với mỗi lần thực thi chương trình.

Trong trường hợp bạn cần xóa toàn bộ phần tử có giá trị chỉ định trong mảng trong Java, ngoài ArrayList thì chúng ta cần phải kết hợp xóa vòng lặp for để có thể xóa toàn bộ phần tử chỉ định khỏi mảng ban đầu.

Ý tưởng ở đây là chúng ta sử dụng một vòng lặp để so sánh từng phần tử trong mảng với giá trị chỉ định, và sẽ copy phần tử đó sang ArrayList nếu giá trị của nó khác với giá trị chỉ định.

Sau đó, chỉ cần chuyển lại ArrayList về mảng là có thể thu về kết quả sau khi xóa toàn bộ phần tử chỉ định trong mảng trong Java, như chương trình sau đây:

import java.util.*;

public class Main {
public static void main(String[] args){
Integer[] arr = {3,1,5,6,5};
System.out.println("Mang ban dau:\n"+Arrays.toString(arr));

//Chỉ định phần tử cần xóa
int elementToBeDeleted= 5;

//Tạo một ArrayList mới để chứa kết quả
List<Integer> list = new ArrayList<Integer>();


//Lặp lại vòng lặp, so sánh và thêm các giá trị (trừ giá trị cần xóa) vào ArrayList
for (int i = 0; i < arr.length-1; i++) {
if(arr[i] != elementToBeDeleted){
list.add(arr[i]);
}
}

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

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

Kết quả, toàn bộ phần tử chỉ định sẽ được xóa đi khỏi mảng ban đầu như sau:

Mang ban dau:
[3, 1, 5, 6, 5]
Mang ket qua :
[3, 1, 6]

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách xóa phần tử trong 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.