Mặc dù đây không phải là một câu trả lời trực tiếp cho câu hỏi, nó là một bổ sung cho đối số .length
vs. .size()
Tôi đã nghiên cứu một cái gì đó liên quan đến câu hỏi này vì vậy khi tôi bắt gặp nó tôi nhận thấy rằng định nghĩa được cung cấp ở đây
Độ dài trường cuối cùng công khai, chứa số lượng thành phần của mảng .
không "chính xác".
Độ dài trường chứa số lượng vị trí có sẵn để đặt một thành phần, không phải số lượng thành phần có trong mảng. Vì vậy, nó đại diện cho tổng bộ nhớ khả dụng được phân bổ cho mảng đó, chứ không phải bao nhiêu bộ nhớ được lấp đầy.
Thí dụ:
static class StuffClass {
int stuff;
StuffClass(int stuff) {
this.stuff = stuff;
}
}
public static void main(String[] args) {
int[] test = new int[5];
test[0] = 2;
test[1] = 33;
System.out.println("Length of int[]:\t" + test.length);
String[] test2 = new String[5];
test2[0] = "2";
test2[1] = "33";
System.out.println("Length of String[]:\t" + test2.length);
StuffClass[] test3 = new StuffClass[5];
test3[0] = new StuffClass(2);
test3[1] = new StuffClass(33);
System.out.println("Length of StuffClass[]:\t" + test3.length);
}
Đầu ra:
Length of int[]: 5
Length of String[]: 5
Length of StuffClass[]: 5
Tuy nhiên, thuộc .size()
tính của ArrayList
không đưa ra số lượng phần tử trong danh sách:
ArrayList<Integer> intsList = new ArrayList<Integer>();
System.out.println("List size:\t" + intsList.size());
intsList.add(2);
System.out.println("List size:\t" + intsList.size());
intsList.add(33);
System.out.println("List size:\t" + intsList.size());
Đầu ra:
List size: 0
List size: 1
List size: 2