Obwohl dies keine direkte Antwort auf die Frage ist, ist es eine Ergänzung zum Argument .length
vs. .size()
Ich habe etwas im Zusammenhang mit dieser Frage recherchiert und als ich darauf stieß, bemerkte ich, dass die Definition (en) hier bereitgestellt wurden
Die öffentliche endgültige Feldlänge, die die Anzahl der Komponenten des Arrays enthält .
ist nicht "genau" richtig.
Die Feldlänge enthält die Anzahl der verfügbaren Stellen zum Einfügen einer Komponente, nicht die Anzahl der im Array vorhandenen Komponenten. Es stellt also den gesamten verfügbaren Speicher dar, der diesem Array zugewiesen ist, und nicht, wie viel von diesem Speicher gefüllt ist.
Beispiel:
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);
}
Ausgabe:
Length of int[]: 5
Length of String[]: 5
Length of StuffClass[]: 5
Die .size()
Eigenschaft von ArrayList
gibt jedoch die Anzahl der Elemente in der Liste an:
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());
Ausgabe:
List size: 0
List size: 1
List size: 2