Definición
Las colecciones en Java permiten agrupar y manipular objetos de forma dinámica. A diferencia de los arreglos tradicionales, no requieren que se conozca su tamaño al momento de la declaración.
Diferencias clave entre arreglos y colecciones
Sección titulada «Diferencias clave entre arreglos y colecciones»-
Arreglos (
array):- Poseen tamaño fijo.
- Se almacenan en bloques contiguos de memoria.
- Para cambiar su tamaño, es necesario crear un nuevo arreglo y copiar manualmente los elementos.
-
Colecciones (como
ArrayList):- Crecen dinámicamente.
- Manejan automáticamente la expansión de su capacidad interna.
Tipos de datos permitidos
Sección titulada «Tipos de datos permitidos»-
Arreglos:
- Pueden almacenar tipos primitivos (
int,double, etc.) y objetos.
- Pueden almacenar tipos primitivos (
-
Colecciones:
-
Limitadas a tipos objeto, ya que utilizan genéricos (
<T>). -
Esto excluye tipos primitivos, pero se puede utilizar autoboxing con clases envolventes como:
IntegerparaintDoubleparadoubleBooleanparaboolean, etc.
-
Estructura interna de ArrayList
Sección titulada «Estructura interna de ArrayList»-
Utiliza internamente un arreglo de tipo
Object[]. -
Este arreglo se redimensiona automáticamente cuando se supera su capacidad actual.
-
En general, se duplica su tamaño para optimizar el rendimiento y reducir la frecuencia de redimensionamientos.
Cuando se intenta agregar un elemento y el arreglo interno está lleno,
ArrayListcrea un nuevo arreglo con mayor capacidad y copia todos los elementos existentes en él. Por defecto, el nuevo tamaño suele ser aproximadamente el doble del tamaño anterior (
Ventajas del uso de ArrayList sobre arreglos
Sección titulada «Ventajas del uso de ArrayList sobre arreglos»-
Permite:
-
Agregar y eliminar elementos sin gestionar el tamaño manualmente.
-
Utilizar métodos utilitarios como:
add()remove()get()contains()indexOf()
-
-
Ideal para situaciones donde el número de elementos no se conoce de antemano o puede cambiar durante la ejecución.