Aunque esta no es una respuesta directa a la pregunta, es una adición al argumento .length
vs. .size()
Estaba investigando algo relacionado con esta pregunta, así que cuando la encontré me di cuenta de que las definiciones proporcionadas aquí
La longitud del campo público final, que contiene el número de componentes de la matriz .
no es "exactamente" correcto.
La longitud del campo contiene el número de lugares disponibles para colocar un componente, no el número de componentes presentes en la matriz. Por lo tanto, representa la memoria total disponible asignada a esa matriz, no la cantidad de memoria que se llena.
Ejemplo:
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);
}
Salida:
Length of int[]: 5
Length of String[]: 5
Length of StuffClass[]: 5
Sin embargo, la .size()
propiedad del ArrayList
da el número de elementos en la lista:
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());
Salida:
List size: 0
List size: 1
List size: 2