Cách sử dụng Java ArrayList
Java ArrayList là một mảng có thể thay đổi kích thước có mục đích chung. Nó cung cấp một số tính năng hữu ích hoạt động trên dữ liệu mà nó chứa. Bạn có thể truy cập các phần tử bằng cách sử dụng một chỉ mục, thực hiện các phép toán CRUD, thay đổi kích thước của mảng và lặp qua các phần tử của nó.
Để sử dụng ArrayList trong chương trình của bạn, trước tiên bạn cần nhập gói java.util.ArrayList. Điều này sẽ cung cấp quyền truy cập vào ba hàm tạo ArrayList, cùng với một số phương thức. Một số phương thức ArrayList phổ biến hơn bao gồm cộng(), addAll (), đặt(), mắc phải(), Chỉ số()và tẩy().
Mục Lục
Các lớp con của AbstractList
Lớp AbstractList triển khai giao diện Danh sách và cung cấp cho bạn quyền truy cập vào các cấu trúc dữ liệu như ArrayList. Các lớp con trực tiếp và gián tiếp khác của AbstractList bao gồm:
- Cấu trúc dữ liệu LinkedList hỗ trợ việc chèn và loại bỏ nhanh chóng tại các chỉ số trung gian.
- Cấu trúc dữ liệu Vector giống như ArrayList, nhưng được đồng bộ hóa. Nó thích hợp để sử dụng thay cho ArrayList cho các ứng dụng đa luồng.
- Cấu trúc dữ liệu ngăn xếp hỗ trợ các hoạt động để bắt chước danh sách nhập – xuất cuối cùng. Đương nhiên, nó đồng bộ hóa bởi vì nó mở rộng Vector lớp.
Các lớp đặc biệt này nằm ngoài phạm vi của bài viết này. Tuy nhiên, bạn sẽ học cách thiết lập và sử dụng Java ArrayList có mục đích chung.
Tạo ArrayList
Tạo ArrayList trong Java rất đơn giản. Bạn có thể tạo ArrayList trống sử dụng hàm tạo không đối số.
Đoạn mã sau tạo một ArrayList trống để chứa các chuỗi.
ArrayList<String> alist = new ArrayList<String>();
Nếu bạn biết danh sách mảng của mình sẽ chứa bao nhiêu mục, bạn có thể chỉ định dung lượng ban đầu. Dung lượng ban đầu này chỉ là một gợi ý để cấp phát bộ nhớ. Cho dù bạn chỉ định dung lượng hay không, ArrayList không có giới hạn bộ nhớ. Nếu bạn biết và chỉ định dung lượng ban đầu, bạn có thể cải thiện hiệu suất một chút.
ArrayList<String> alist = new ArrayList<String>(8);
Đoạn mã trên tạo một ArrayList (alist) phân bổ tám vị trí chỉ mục trong bộ nhớ.
Điền vào một ArrayList
Thêm các mục ở cuối
Việc điền ArrayList khá dễ dàng. Chỉ cần sử dụng cộng() để thêm một mục duy nhất vào cuối ArrayList. Đây là một ví dụ:
ArrayList<String> alist = new ArrayList<String>();
alist.add("apple");
alist.add("banana");
alist.add("cantaloupe");
alist.add("orange");
System.out.println(alist);
Đoạn mã trên hiển thị kết quả đầu ra sau trong bảng điều khiển:
[apple, banana, cantaloupe, orange]
Các kích thước() phương thức trả về số lượng mục trong ArrayList.
System.out.println("Number of elements in the arraylist: " + alist.size());
Thêm các mục tại một chỉ mục được chỉ định
Bạn muốn thêm một mục tại một vị trí chỉ mục cụ thể? Đơn giản chỉ cần cung cấp cộng() với vị trí chỉ mục bạn muốn sử dụng, theo sau là mục bạn muốn thêm:
alist.add(3, "grapes");
System.out.println(alist);
Đoạn mã trên hiển thị kết quả đầu ra sau trong bảng điều khiển:
[apple, banana, cantaloupe, grapes, orange]
Trong ArrayList ở trên, bạn sẽ nhận thấy rằng “nho” đứng thứ tư trong danh sách. Đây là ở vị trí chỉ mục thứ ba vì Java ArrayList bắt đầu ở vị trí chỉ mục bằng không.
Thêm một loạt các mặt hàng
Bạn cũng có thể thêm các mục từ bất kỳ bộ sưu tập nào trong hệ thống phân cấp Bộ sưu tập Java. Một Lập danh sách là một loại cụ thể được gọi là Danh sách. Đây là một cách để xây dựng một Danh sách từ một loạt các mục (sử dụng Arrays.asList ()) và thêm nó vào một Lập danh sách.
List<String> items = Arrays.asList("pear", "cherry");
alist.addAll(items);
System.out.println(alist);
Bạn cũng có thể cung cấp một chỉ mục làm đối số đầu tiên của addAll () phương pháp. Điều này sẽ cho phép bạn đặt Danh sách các mục ở bất kỳ vị trí nào trong ArrayList.
Truy cập các mục
Sau khi bạn thêm các mục vào ArrayList, làm cách nào để bạn truy cập lại chúng?
Truy cập các mục bằng chỉ mục
Nếu bạn biết chỉ mục của mặt hàng, bạn có thể sử dụng mắc phải() phương thức để truy xuất phần tử tại vị trí chỉ mục cụ thể.
String item = alist.get(2);
System.out.println("Item at index 2 is: " + item);
Tìm vật phẩm
Nếu bạn không biết chỉ số của mặt hàng thì sao? Bạn có thể dùng Chỉ số() để kiểm tra xem mục có trong mảng hay không và truy xuất mục đó bằng cách sử dụng chỉ mục trả về.
System.out.println(alist);
int index = alist.indexOf("orange");
if (index < 0) {
System.out.println("Item "orange" not found");
} else {
System.out.println("Item "orange" found at index " + index);
}
Các Chỉ số() phương thức trả về -1 khi chương trình không tìm thấy một mục:
index = alist.indexOf("grape");if (index < 0) {
System.out.println("Item "grape" not found");
} else {
System.out.println("Item "grape" found at index " + index);
}
Lặp lại trên một ArrayList
Việc sử dụng phổ biến nhất của một Lập danh sách đang lặp lại các phần tử. Bạn có thể thực hiện điều này bằng một số cách. Đoạn mã sau chứa một vòng lặp for lặp qua ArrayList và in từng mục trong bảng điều khiển:
for (String fruit : alist) {
System.out.println("Found fruit "" + fruit + """);
}
Trước khi Java nâng cao cho các nhà phát triển vòng lặp sẽ lặp lại các mục trong ArrayList với một trình lặp. Một trình lặp cũng có thể tẩy các phần tử trong quá trình lặp, như ví dụ minh họa bên dưới. Lưu ý rằng đoạn mã dưới đây tạo một bản sao của ArrayList và hoạt động trên bản sao.
ArrayList<String> blist = new ArrayList<String>(alist);for (Iterator<String> iter = blist.iterator() ; iter.hasNext() ; ) {
String fruit = iter.next();
if (fruit.startsWith("c")) {
iter.remove();
} else {
System.out.println("Keeping "" + fruit + """);
}
}
Thay thế các mặt hàng
Các đặt() cho phép bạn thay thế một mục hiện có trong ArrayList. Phương thức này có hai đối số; vị trí chỉ mục của mục bạn muốn thay thế và mục mới.
alist.set(5, "pineapple");
System.out.println(alist);
Loại bỏ các mục
Nếu bạn biết vị trí chỉ mục của một mục mà bạn muốn xóa khỏi danh sách, bạn có thể sử dụng tẩy() phương pháp để đạt được điều này. Các tẩy() phương thức lấy một vị trí chỉ mục hoặc một mục làm đối số.
String fruit = alist.remove(2);
System.out.println("Removed element at 2: " + fruit);
Đoạn mã dưới đây trả về THÀNH THẬT nếu chương trình định vị và loại bỏ mục được chỉ định.
fruit = "grapes";
System.out.println("Remove " +fruit+ " from the list? " + alist.remove(fruit));
Giá trị của việc chọn đúng cấu trúc dữ liệu
Biết cách tạo và sử dụng ArrayLists trong Java là một kỹ năng vô giá. ArrayList là một trong số các cấu trúc dữ liệu mà bạn có thể sử dụng để lưu trữ dữ liệu. Vì vậy, nó có thể không phải lúc nào cũng là cấu trúc dữ liệu phù hợp nhất cho những gì bạn muốn đạt được.
Ví dụ: nếu bạn muốn lưu trữ dữ liệu của mình bằng một khóa duy nhất và thứ tự lưu trữ không quan trọng, thì HashMap là một lựa chọn tốt hơn ArrayList. Do đó, nó là một tài sản để biết cách sử dụng nhiều loại cấu trúc dữ liệu.
Đọc tiếp
Giới thiệu về tác giả