Để xóa toàn bộ phần tử khỏi ArrayList trong Java, sử dụng phương thức clear().
Cú pháp
arrayList.clear();
Phương thức này:
- Xóa tất cả phần tử khỏi list.
- Kích thước (size) trở về 0.
- Dung lượng (capacity) không thay đổi (vẫn giữ mảng nội bộ để tái sử dụng).
- Trả về
void.
Ví dụ hoàn chỉnh
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
ArrayList arrlist = new ArrayList<>(5);
// Thêm phần tử
arrlist.add(25);
arrlist.add(50);
arrlist.add(75);
arrlist.add(100);
arrlist.add(150);
arrlist.add(200);
arrlist.add(250);
System.out.println("Danh sách ban đầu:");
for (Integer number : arrlist) {
System.out.println("Number = " + number);
}
int size = arrlist.size();
System.out.println("Danh sách có " + size + " phần tử");
System.out.println("Thực hiện clear()...");
arrlist.clear();
size = arrlist.size();
System.out.println("Sau clear: " + size + " phần tử");
// Kiểm tra capacity (không public API, nhưng nội bộ mảng vẫn giữ nguyên)
System.out.println("Danh sách rỗng: " + arrlist);
System.out.println("isEmpty(): " + arrlist.isEmpty());
}
}
Kết quả
Danh sách ban đầu: Number = 25 Number = 50 Number = 75 Number = 100 Number = 150 Number = 200 Number = 250 Danh sách có 7 phần tử Thực hiện clear()... Sau clear: 0 phần tử Danh sách rỗng: [] isEmpty(): true
Các cách khác để xóa phần tử
| Phương pháp | Mô tả | Lưu ý |
|---|---|---|
clear() | Xóa tất cả, giữ capacity | Nhanh nhất, O(1) amortized |
removeAll(Collection) | Xóa các phần tử có trong collection khác | O(n*m), hữu ích khi xóa theo điều kiện |
removeIf(Predicate) | Xóa phần tử thỏa predicate (Java 8+) | Dễ đọc, lọc điều kiện |
Gán new ArrayList<>() | Tạo list mới, GC dọn list cũ | Giải phóng memory (capacity), chậm hơn |
list = null | Bỏ tham chiếu, chờ GC | Chỉ dùng khi không cần list nữa |
Ví dụ removeIf (Java 8+)
// Xóa số chẵn
list.removeIf(n -> n % 2 == 0);
// Xóa chuỗi rỗng hoặc null
list.removeIf(s -> s == null || s.isEmpty());
Lưu ý hiệu năng
clear()chỉ đặtsize = 0và null-out các reference trong mảng backing (để GC), rất nhanh.- Nếu muốn giải phóng bộ nhớ backing array, gán list mới:
list = new ArrayList<>(); trimToSize()sau clear() không làm gì vì size=0, capacity không giảm (implementation detail).