Pregunta

Estaba revisando la documentación de Java y encontré el método clear () de ArrayLists.

¿Cuál es el uso de esto, en lugar de simplemente reasignar un nuevo objeto ArrayList a la variable?

¿Fue útil?

Solución

Debido a que puede haber múltiples referencias a la lista, puede ser preferible y / o más práctico eliminarla que reasignar todas las referencias.

Si vacía mucho su matriz (dentro de, por ejemplo, un bucle grande) no tiene sentido crear muchos objetos temporales. Seguro que el recolector de basura eventualmente los limpiará, pero no tiene sentido desperdiciar recursos si no tiene que estarlo.

Y porque borrar la lista es menos trabajo que crear uno nuevo.

Otros consejos

Es posible que tenga un campo final (variable de clase) List :

private final List<Thing> things = ...

En algún lugar de la clase desea borrar (eliminar todas) las cosas. Como things es definitivo, no se puede volver a asignar. Además, es probable que no desee volver a asignar una nueva instancia de la Lista, ya que ya tiene una Lista perfectamente instanciada.

Imagina la situación en la que hay varias referencias del mismo java.util.ArrayList en todo tu código. Sería casi imposible o muy difícil crear una nueva instancia de la lista y asignarla a todas las variables. Pero java.util.ArrayList.clear () hace el truco!

Usted paga menos con claridad que con la creación de un nuevo objeto si su objetivo era realmente claro.

La reasignación de una referencia no borra el objeto. El supuesto es que si no hay otras referencias a él, el GC lo reclamará relativamente pronto. De lo contrario, sólo te has metido en un lío.

Además de las razones mencionadas, borrar una lista a menudo es más correcto semánticamente que crear una nueva. Si su resultado deseado es una lista despejada, la acción que debe tomar es borrar la lista, no crear una nueva lista.

clear () no reasigna un nuevo objeto, por lo que es menos un golpe de rendimiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top