Vector
es una clase de colección heredada de Java 1.0. En Java 1.2 (¡hace mucho tiempo!), Se agregó el Collections Framework que incluía nuevas clases de colección como ArrayList
y HashMap
, que estaban destinadas a reemplazar las clases heredadas Vector
y Hashtable
.
Como se dijo anteriormente, las clases de colecciones heredadas tenían sincronización incorporada, que es innecesaria para muchas aplicaciones. La sincronización tiene una sobrecarga de rendimiento, por lo que si no es necesario, no debe usarla.
En algunos casos (cuando el programa tiene varios subprocesos y varios subprocesos tienen acceso a los mismos datos), debe sincronizar sus colecciones. Algunas personas usarían entonces los viejos Vector
o Hashtable
clases, sino una forma mejor es utilizar un envoltorio de sincronización con por ejemplo un ArrayList
:
// Your standard, unsynchronized list
List<String> data = new ArrayList<String>();
// Use this to put it into a synchronization wrapper
List<String> syncedData = Collections.synchronizedList(data);
Consulte la documentación de la API de Collections.synchronizedList()
(y otros métodos) para obtener más información.
Es curioso que 'Vector' no haya sido desaprobado. Supongo que ya que no hay un reemplazo de uno-por-uno, no lo han hecho. – skaffman
Tenga en cuenta que esto también es cierto para Hashtable: utilice HashMap en su lugar. –
@skaffman 'CopyOnWriteArrayList' es más o menos un reemplazo uno por uno en la medida en que es una implementación de' Lista' de hilos. Para la mayoría de los usos, 'CopyOnWriteArrayList' debería ofrecer un mejor rendimiento que' Vector' –