2011-03-27 16 views
6

Soy nuevo en Java.Java Vector: claro vs método removeAllElements

Cuál es más eficiente para Vectors - clear() o removeAllElements(). Supongo que removeAllElements ya que deja la capacidad sin cambios (no libera memoria) mientras que clear() libera memoria. Dependiendo de la aplicación, cualquiera puede ser deseable.

Agradeceré algunas aportaciones. Gracias.

+2

Considere el uso de 'ArrayList' ya que' Vector' es bastante antiguo, solo utilizado por personas que leen libros de texto antiguos. –

+0

De acuerdo ... Hice más investigación y cambié. :) – Paul

Respuesta

9

Por el JavaDoc sobre el método .removeAllElements().

"Este método es idéntico en funcionalidad al método claro (que es parte de la Lista interfaz)."

7

Vector fue en Java 1.1, y desde Java 1.4 la nueva Collection API ha aparecido, la definición de una interfaz general List con la función clear().

Utilice clear(), porque es la API moderna. Ambas funciones son equivalentes.

Btw. considere usar ArrayList en lugar de Vector. ArrayList no está sincronizado, por lo que es más rápido si no accede a la Lista desde diferentes subprocesos simultáneamente.

2

Cuando usted está preocupado por la eficiencia (y hay bastante probabilidad de que esté por las razones equivocadas), no utilice Vector en absoluto, pero el uso de una aplicación List (como ArrayList) en su lugar. Si está utilizando Vector debido a su sincronización interna (y tengo mis dudas sobre eso), use un synchronizedList en su lugar.

Además, Vector.clear() simplemente llama a Vector.removeAllElements() por lo que no existe una diferencia funcional, solo una llamada de función más al usar Vector.clear(). Dicho esto, si tiene que usar Vector, llame al Vector.clear() porque se adhiere a la interfaz más moderna Collection y declara una intención más clara.

+0

Gracias por señalar esto. Estaba usando Vector porque vengo de un fondo C++ STL. Voy a investigar Listas más. – Paul

1

Como en Javadoc para Vector.removeAllElements():

elimina todos los componentes de este vector y establece su tamaño a cero. Este método es idéntico en funcionalidad al método claro()

modo que sean idénticos. clear() es mejor debido al cumplimiento de la nueva interfaz de Java Colecciones.