Skip to main content

¿Qué es una matriz dinámica?

Una matriz dinámica es una estructura de datos utilizada en la programación de computadoras que contiene múltiples objetos informáticos como un solo grupo, y puede redimensionarse a voluntad para acomodar un número variable de objetos. El grupo se mantiene en un solo bloque contiguo de memoria, por lo que el acceso a los elementos es eficiente y rápido. Las matrices dinámicas también se denominan vectores o listas, según el lenguaje informático en el que se utilizan. A pesar de estos nombres, cualquier lista o vector en particular puede no ser una matriz dinámica, ya que las listas y los vectores pueden implementarse de manera diferente a las matrices y entre sí.

C ++ contiene una única clase de matriz dinámica llamada vector, que reside en un grupo de clases llamada biblioteca de plantillas estándar. Se puede acceder a la matriz que respalda esta clase mediante iteradores o índices. Su capacidad de redimensionar según demanda es una gran ventaja, pero puede atraer a los programadores a una falsa sensación de seguridad porque no es tan robusto como parece. La matriz dinámica que respalda un vector no puede garantizar que las solicitudes de acceso sean válidas. Al igual que las matrices estáticas, las matrices dinámicas pueden tener problemas de comprobación de límites y corrupción de memoria si un programa intenta acceder a la memoria que no se les ha asignado.

Java contiene tres clases distintas de matriz dinámica: Vector, ArrayList y CopyOnWriteArrayList. A los elementos de la matriz solo se accede por índices, e intentar acceder a índices fuera de la matriz generalmente no causará problemas de corrupción de memoria. La clase Java Vector es más o menos equivalente a la clase vectorial C ++, y no está sincronizada para permitir el acceso de múltiples subprocesos. ArrayList y CopyOnWriteArrayList, por el contrario, son seguras para subprocesos. De los tres, CopyOnWriteArrayList es la clase que requiere más trabajo, porque recrea completamente la matriz dinámica cada vez que se escribe un nuevo valor en la matriz.

Las matrices dinámicas se implementan esencialmente de la misma manera, independientemente del lenguaje informático involucrado, pero dependiendo de un idioma en particular puede haber otras capacidades incorporadas. Al igual que las matrices estáticas, las matrices dinámicas no restringen el tipo de objeto que se puede almacenar dentro de ellas, siempre que sean del mismo tipo de objeto. Un programador nunca necesita acceder a una matriz dinámica directamente; siempre se puede hacer a través de una clase que envuelva la matriz para facilitar su uso. El uso adecuado de estos arreglos puede ayudar a un programador con la organización de datos dentro del código, y también con la creación de código comprensible que se preste a un mantenimiento fácil.