Saltar al contenido

¿Por qué iniciar un ArrayList con una capacidad inicial?

Necesitamos tu ayuda para compartir nuestros escritos referente a las ciencias informáticas.

Solución:

Si sabe de antemano cuál es el tamaño de la ArrayList va a ser, es más eficiente especificar la capacidad inicial. Si no hace esto, el interno array tendrá que reasignarse repetidamente a medida que crezca la lista.

Cuanto más grande sea la lista final, más tiempo ahorrará al evitar las reasignaciones.

Dicho esto, incluso sin preasignación, insertando n elementos en la parte posterior de un ArrayList está garantizado para tomar total O(n) hora. En otras palabras, agregar un elemento es una operación de tiempo constante amortizada. Esto se logra haciendo que cada reasignación aumente el tamaño de la array exponencialmente, típicamente por un factor de 1.5. Con este enfoque, se puede demostrar que el número total de operaciones es O(n).

Porque ArrayList es un cambio de tamaño dinámico array estructura de datos, lo que significa que se implementa como una array con un tamaño fijo inicial (predeterminado). Cuando esto se llena, el array se extenderá a uno de tamaño doble. Esta operación es costosa, por lo que desea la menor cantidad posible.

Entonces, si sabe que su límite superior es de 20 elementos, entonces crear el array con una longitud inicial de 20 es mejor que usar un valor predeterminado de, digamos, 15 y luego cambiar el tamaño a 15*2 = 30 y use solo 20 mientras desperdicia los ciclos para la expansión.

PD: como dice AmitG, el factor de expansión es específico de la implementación (en este caso (oldCapacity * 3)/2 + 1)

El tamaño predeterminado de Arraylist es 10.

    /**
     * Constructs an empty list with an initial capacity of ten.
     */
    public ArrayList() 
    this(10);
     

Entonces, si va a agregar 100 o más registros, puede ver la sobrecarga de la reasignación de memoria.

ArrayList list = new ArrayList<>();    
// same as  new ArrayList<>(10);      

Entonces, si tiene alguna idea sobre la cantidad de elementos que se almacenarán en Arraylist, es mejor crear Arraylist con ese tamaño en lugar de comenzar con 10 y luego aumentarlo.

Más adelante puedes encontrar las aclaraciones de otros administradores, tú asimismo puedes mostrar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *