Các phương thức của ArrayList
Đã giới thiệu| English | Ý nghĩa |
|---|---|
| ArrayList/əˈreɪ lɪst/ | ArrayList |
Chèn thay đổi các chỉ số sau
- Một ArrayList bắt đầu
[cat, dog].add(1, "owl")tạo ra[cat, owl, dog], sau đóremove(0)tạo ra[owl, dog].get(1)giờ đây trả về"dog". - Theo dõi toàn bộ danh sách sau mỗi thao tác: chèn dịch các phần tử sau sang phải, trong khi loại bỏ dịch chúng sang trái. Một chỉ số xác định vị trí, chứ không phải là danh tính vĩnh viễn của một phần tử.
Một danh sách có kích thước và kiểu phần tử
- Một ArrayList lưu trữ một chuỗi tham chiếu có khả năng mở rộng. Import
java.util.ArrayListvà khai báoArrayList<String> names = new ArrayList<String>();; size ban đầu bằng 0. - Tham số kiểu là tham chiếu, vì vậy hãy dùng
Integercho số nguyên thay vìint.size()đếm các phần tử được lưu trữ; dung lượng ban đầu là không gian sẵn sàng để phát triển và không tạo ra nhiều phần tử như vậy.
Thêm vào cuối hoặc chèn bên trong giới hạn phải
add(x)thêm một phần tử vào cuối;add(i, x)chèn vào trước phần tử hiện tại tại vị trí i. Đối với việc chèn, các chỉ số hợp lệ chạy từ 0 đến size bao gồm, do đóadd(size(), x)cũng thực hiện thêm vào.get(i)đọc một phần tử đã tồn tại, vì vậy các chỉ số của nó chạy từ 0 đến size trừ đi 1. Một danh sách trống không có chỉ số get hợp lệ;get(size())nằm ngoài giới hạn mặc dù việc chèn tại đó được phép.
Đối với một danh sách có kích thước 2, add(2, value) được phép nhưng get(2) nằm ngoài giới hạn.
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Chèn cho phép vị trí bằng size; get yêu cầu một chỉ mục tồn tại nhỏ hơn strictly size.
Thay thế và loại bỏ trả về các kết quả khác nhau
set(i, x)thay thế một phần tử đã tồn tại và trả về giá trị cũ mà không thay đổi size.remove(int i)loại bỏ phần tử tại vị trí đó, trả về nó, và giảm size đi một đơn vị.- Phương thức
remove(Object value)bị quá tải (overloaded) thay vào đó sẽ xóa giá trị bằng giá trị đầu tiên và trả về xem có loại bỏ matches hay không. Trong mộtArrayList<Integer>,remove(1)có nghĩa là chỉ số 1; hãy dùngremove(Integer.valueOf(1))để loại bỏ giá trị 1.
import java.util.ArrayList;
import java.util.Arrays;
public class RemoveChoice {
public static void main(String[] args) {
ArrayList<Integer> byIndex = new ArrayList<>(Arrays.asList(1, 2, 1));
ArrayList<Integer> byValue = new ArrayList<>(Arrays.asList(1, 2, 1));
int removed = byIndex.remove(1);
boolean found = byValue.remove(Integer.valueOf(1));
System.out.println(removed + " " + byIndex);
System.out.println(found + " " + byValue);
}
}
Hai đầu ra là 2 [1, 1] và true [2, 1]. Mỗi danh sách mất một phần tử, nhưng là một phần tử khác nhau.
add, get, và remove
Sau remove(0), dog chuyển sang chỉ số 0 và size giảm xuống còn 1.
Làm thế nào để lấy số lượng phần tử trong một danh sách ArrayList?
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
ArrayList sử dụng size(); mảng sử dụng .length.
Đối với một ArrayList list có ít nhất ba phần tử, bạn truy cập phần tử tại chỉ mục 2 như thế nào?
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
ArrayList sử dụng get(i), không phải [i].
Sau a.remove(0) trên {cat, dog}, a.get(0) sẽ trả về giá trị gì?
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
remove(0) xóa cat; dog chuyển sang chỉ số 0.
Bạn có thể truy cập phần tử của ArrayList bằng ngoặc vuông, giống như list[0].
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
ArrayList sử dụng các phương thức (get/set), không phải cú pháp [].
add(x) với một tham số thêm x...
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
add(x) thêm vào cuối; add(i, x) chèn tại chỉ số i.
Bắt đầu từ [1, 2, 1], remove(1) được gọi với một tham số int. Giá trị nào được trả về?
Độ khó 2/5 · 140 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
overload của int loại bỏ chỉ mục 1, mà phần tử của nó là 2.
Chọn theo kiểu khai báo của đối số
- Java chọn overload dựa trên kiểu của đối số.
int index = 1; list.remove(index);loại bỏ theo vị trí 1;Integer value = 1; list.remove(value);chọn loại bỏ theo giá trị. - Một danh sách String có thể xóa
"owl"dựa trên giá trị hoặc xóa 0 dựa trên vị trí. Hãy quyết định ý bạn muốn trước khi theo dõi sự dịch chuyển; việc không tìm thấy giá trị bằng nhau sẽ trả về false và giữ nguyên danh sách.
Mảng sử dụng a[i] và a.length; ArrayList sử dụng get(i) và size(). Giữ riêng giới hạn chèn khỏi giới hạn phần tử hiện có, và đừng giả định rằng một tham số trông giống số nguyên truyền vào remove luôn có nghĩa là một giá trị được lưu trữ.
Kiểm tra một thay thế và một lần loại bỏ thất bại
- Bắt đầu từ
[owl, dog],set(1, "fox")trả về"dog"và để lại[owl, fox]có kích thước 2. Sau đó,remove("cat")trả về false và không thay đổi gì. - Kiểm tra các danh sách rỗng, các vị trí hợp lệ đầu tiên/cuối cùng, và một giá trị không tồn tại. Đọc cả overload và giá trị trả về cũng như danh sách kết quả; thay thế, chèn và xóa có các hợp đồng khác nhau.
ArrayList là một dãy có thể thay đổi kích thước, truy cập thông qua các phương thức. Chèn tại vị trí 0 thông qua size; đọc, thay thế hoặc xóa vị trí hiện có tại 0 thông qua size trừ đi 1. remove(int) xóa một vị trí; remove(Object) xóa giá trị đầu tiên trùng khớp nếu tìm thấy.
After the stated insertion and removal, type the value returned by get(0).
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
The final list is [owl, dog], with owl at index 0.