Ajustar la capacidad de un ArrayList

12/May/2022 Java Deja un comentario
Programación en Java

La capacidad de añadir y eliminar elementos en un ArrayList hace que el tamaño de memoria vaya cambiando de forma dinámica. De esa manera la máquina virtual se va adaptando y preparando para la carga que le puede ir llegando al array. Es por ello que hoy vamos a ver cómo podemos ajustar la capacidad de un ArrayList para que solo ocupe en memoria los elementos que tiene en un determinado momento.

También hay que tener en cuenta que podemos haber definido un ArrayList que tenga un tamaño inicial y luego ver que realmente no necesitamos tanta capacidad. Además hay que tener en cuenta que, por defecto, un ArrayList tiene preparado siempre en memoria la capacidad de 1,5 del tamaño actual que tenga el ArrayList. Y puede ser que nos interese ahorrar esa parte de la memoria.

Como es habitual creamos un ArrayList y le añadimos elementos para poblarlo con una capacidad inicial:

ArrayList<String> al = new ArrayList<String>();

// Añadir elementos a un ArrayList
al.add("Victor");
al.add("Luis");
al.add("Marta");

Ahora, lo único que tenemos que hacer para poder ajustar la capacidad de un ArrayList es invocar al método .trimToSize():

al.trimToSize();

En este momento cuando la máquina virtual ajusta el tamaño. Es importante que si pensamos en el tamaño del Array, este siempre será de tamaño 3. Si bien es en memoria dónde se ajusta la capacidad del ArrayList. Por lo tanto, si invocamos al método .size() veremos que nos devuelve el valor de 3.

System.out.println(al.size());

Para gestionar de una forma óptima la memoria con el uso de ArrayList podemos combinar esta técnica de ajustar la capacidad de un ArrayList con la técnica de asegurar una capacidad mínima en un ArrayList.

Seguro que si manipulas grandes cantidades de datos y los insertas y eliminas de un ArrayList este simple método te ayudará mucho para optimizar la memoria.

Vídeos sobre Java


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.