Las collecciones son organizaciones de objetos que
aportan flexibilidad de manejo al programador. Son estructuras para
composición de grupo de datos o estructuras de representación de
información. Su disposición en la memoria RAM abarca dos grandes
tendencias conocidas como representación estática o rígida
una y la otra como representación dinámica o
flexible. La primera significa que se reserva espacio en
memoria para todo el grupo de objetos en una sola
petición al administrador de la memoria del sistema operativo quedando
congelado tanto el tamaño del grupo y el tipo de elementos que le
conformarán. Su posterior uso, por consiguiente, estará limitado a esas
dos restricciones. En la segunda modalidad la creación o reserva de
espacio en memoria no se hace para todo el grupo de una vez sino que se
van creando o reservando espacio para cada elemento individual del
grupo y por ello es posible inclusive hacer mezclas de tipos de
objetos. La segunda forma aporta aún más flexibilidad de
manejo del grupo. Los nombres genéricos usuales en el argot son arreglos
para el primer caso y arreglos
dinámicos para el segundo caso. También se les
denomina vectores, matrices, arreglos unidimensionales, arreglos
bidimensionales, arreglos tridimensionales en el primercaso y cadenas
lineales, cadenas no lineales, listas, árboles, redes....según la
particularidad en su representación en el segundo caso.
El primer caso aporta acceso
directo
a sus elementos pues ellos además de ser del mismo tamaño se encuentran
ubicados en posiciones contiguas lo que permite que sin necesidad de
visitar los elementos previos pueda fácilmente ser calculada su
ubicación real mediante una función de direccionamiento que convierta
su posición relativa al grupo en posición absoluta en la RAM. Su
inconveniente es que resulta costoso su uso cuando se trata de aplicar
en situaciones que requieren permanente recomposición del grupo, por
ejemplo cuando se requiere insertar o suprimir elementos
reiteradamente, puesto que deben efectuarse corrimientos de
elementos en un sentido o en el inverso. Para la inserción de
elementos, además ha de tenerse espacios reservados previamente para
ello desde el momento mismo de creación de la estructura que se hace en
una sola petición de espacio en memoria. Ésto aporta cierta rigidez
organizacional.
En el segundo caso impone acceso
secuencial
debido a que la estructura se va formando paulatinamente mediante
sucesivas solicitudes individuales de memoria para cada elemento y en
consecuencia ellos quedan ubicados en forma dispersa en la RAM debido a
que entre una y otra solicitudes de memoria otras estructuras del mismo
programa u otros diferentes han hecho también solicitudes de
memoria.
Ésto impone una carga adicional al proceso pues los elementos deben
encadenarse para poder saberse dónde se ubican. Luego para visitar a un
elemento ha de haberse visitado previamente otro que pueda informar
dónde reside el de interés. Por el contrario, éste tipo de estructuras
aportar gran flexibilidad organizacional puesto que no se impone
reservar los espacios de memoria en un solo bloque contiguo y en
consecuencia es altamente eficiente en procesos que enmarquen
inserciones y retiros continuamente.