¿Por qué Java inserta null en un arreglo al utilizar List.toArray?
La salida del fragmento de código es:
[10, 20, 30, 40, 50, null, 7, 8, 9, 0]
He encontrado el siguiente código en el método ArrayList.toArray
:
if (a.length > size)
a[size] = null;
¿Cuál es la razón para este comportamiento?
¿Por qué el quinto elemento en mi ejemplo es null
, pero no 6
?
davy.ai
La razón por la cual se agrega un
null
al final del array si es más grande que el tamaño del ArrayList, es para indicar que no hay más elementos en la lista más allá del último elemento real.En el fragmento de código dado, se llama al método
toArray
en el objetolist
para convertirlo en un array y guardarlo en el objetoarray
. Dado que el tamaño delist
es más pequeño que la longitud dearray
, agrega unnull
al final del array para indicar que no hay más elementos reales.Por lo tanto, la salida del fragmento de código es
[10, 20, 30, 40, 50, null, 7, 8, 9, 0]
.El quinto elemento en el ejemplo es
null
, porquelist
solo tiene 5 elementos y el métodotoArray
llena los elementos restantes del array connull
. En este caso,array
tiene 10 elementos, por lo que llena los primeros 5 elementos con los elementos delist
, deja el sexto elemento comonull
y llena los elementos restantes con los valores existentes en el array.