La diferencia entre lista de matrices y vector

Hay tres métodos de construcción para arraylist:

public ArrayList(int initialCapacity)//构造一个具有指定初始容量的空列表。
public ArrayList()//构造一个初始容量为 10 的空列表。
public ArrayList(Collection<? extends E> c)//构造一个包含指定 collection 的元素的列表

Vector tiene cuatro métodos de construcción:

public Vector()//使用指定的初始容量和等于零的容量增量构造一个空向量。
public Vector(int initialCapacity)//构造一个空向量,使其内部数据数组的大小,其标准容量增量为零。
public Vector(Collection<? extends E> c)//构造一个包含指定 collection 中 的元素的向量
public Vector(int initialCapacity,int capacityIncrement)//使用指定的初始容量和容量增量构造一个空的向量

Tanto ArrayList como Vector se implementan con matrices. Hay cuatro diferencias principales:
(1) Vector es seguro para múltiples subprocesos. La seguridad de subprocesos significa que varios subprocesos acceden al mismo código sin generar resultados inciertos.
Y ArrayList no. Esto se puede ver en el código fuente. Muchos métodos en la clase Vector son
modificados



por sincronizados , lo que lleva a que la eficiencia de Vector no se pueda comparar con ArrayList; (2) Ambos usan almacenamiento lineal continuo en espacio. Elemento, pero cuando el espacio es insuficiente, las dos categorías aumentan de diferentes maneras . (3) Vector puede establecer el factor de crecimiento, pero no ArrayList. (4) Vector es una matriz dinámica antigua. Está sincronizada con subprocesos y tiene baja eficiencia. Por lo general, su uso está desaconsejado.
Análisis de escenarios de aplicación:
1) Vector es sincrónico con subprocesos, por lo que también es seguro para subprocesos, mientras que ArrayList es sincrónico con subprocesos, lo cual no es seguro.
Si no se tiene en cuenta la seguridad de los subprocesos, ArrayList suele ser más eficaz.
2) Si el número de elementos en la colección es mayor que la longitud de la matriz de la colección actual, usar una cantidad relativamente grande de datos en la colección
, usar Vector tiene ciertas ventajas.

Supongo que te gusta

Origin blog.csdn.net/lthahaha/article/details/114236001
Recomendado
Clasificación