La diferencia entre ArrayList y Vector
Similitudes:
1. ArrayList como Vector heredan la misma clase principal e implementan la misma interfaz.
2. La capa inferior se implementa mediante matrices
3. La longitud predeterminada inicial es 10.
Diferencias:
1. Sincronización:
La mayoría de los métodos públicos en el vector agregan la palabra clave sincronizada para garantizar la sincronización de los métodos, es decir, el hilo de hilo vectorial y el hilo ArrayList no es segura.
2. Diferente expansión
Las diferentes propiedades internas pueden ser la razón de diferentes métodos de escala.
ArrayList tiene dos propiedades, la matriz ElementData que almacena datos y el tamaño que almacena el número de registros.
El vector tiene tres propiedades: la matriz ElementData que almacena datos, el elemento que almacena el número de registros y el factor de expansión de la capacidad de entrada que expande el tamaño de la matriz.
Método de extensión de ArrayList
//jdk1.8.0_91Private void Grow (int mincapacity) {// Overflow-Conscious Code int OldCapacity = elementData.length; int newCapacity = OldCapacity + (OldCapacity >> 1); if (newCapacity - mincapacity <0) newCapacity = mincapacity; if (newCapacity - max_array_size> 0) newCapacity = HugeCapacity (mincapacity); // La mincapacidad generalmente está cerca del tamaño, por lo que esta es una victoria: elementData = arrays.copyOf (elementData, newCapacity); }Se puede ver que cuando se cumple la condición de expansión, el tamaño de la matriz extendido es 1.5 veces la longitud de la matriz original y el mayor de los parámetros pasados.
Método de extensión vectorial
//jdk1.8.0_91Private void Grow (int mincapacity) {// Overflow-Conscious Code int OldCapacity = elementData.length; int NewCapacity = OldCapacity + ((CapacityIncrement> 0)? CapacityIncrement: OldCapacity); if (newCapacity - mincapacity <0) newCapacity = mincapacity; if (newCapacity - max_array_size> 0) newCapacity = HugeCapacity (mincapacity); elementData = arrays.copyOf (elementData, newCapacity); }Se puede ver que cuando el factor de expansión es mayor que 0, la longitud de la nueva matriz es la longitud de la matriz original + el factor de expansión, de lo contrario, la longitud de la matriz submarina es el doble de la longitud de la matriz original. Compare la nueva longitud de la matriz generada anteriormente con la longitud del parámetro pasada, la más grande es la nueva longitud final.
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!