32

En programación, a menudo nos toparemos con la necesidad de tener que utilizar diferentes tipos de estructuras de datos para el manejo de la información. Y es ahí donde surge la necesidad de utilizar elementos conocidos como tipos complejos, como las pilas, listas entre otros.

Para aprender un poco más sobre este tipo de datos te comparto un fragmento del siguiente artículo:

“En Java los tipos complejos no son más que Clases. Aún no hemos ahondado en este concepto, pero basta decir que las clases son tipos que no van incrustados en el propio lenguaje. Hay multitud de estos tipos complejos, todos ellos encuadrados en la librería java.util. Ya veremos que son las librerías, pero por ahora basta decir que son definiciones de tipos almacenadas en ficheros externos.

String

Los String son conjuntos (arrays) de caracteres. Aunque los Arrays no se explican hasta el siguiente punto, tampoco se necesita saber por ahora que son, ya que para nosotros su funcionamiento es trasparente. Para crear un string sólo hay que entrecomillar varios caracteres.

String titulo = “Pildoritas de POO y Java”;

Array

Un array es un conjunto de datos del mismo tipo y ordenados. Para entender este concepto hay que pensar en “cajitas” consecutivas que contienen datos del tipo del array.

Lo mejor para entenderlo es verlo visualmente. Veamos un array de int:

0             1             2             3             4

1             3             -2            8             5

Para crear un array en Java lo haríamos de la siguiente forma:

int[] arrayEnteros = {5, 3, -2, 8, 5};

Los arrays en Java tienen una dimensión finita que se define a la hora de su creación. En nuestro ejemplo al inicializarlo con los valores anteriores, el intérprete ya sabe que el array es de longitud 5. No obstante, también pueden definirse sin dimensión:

?

int[5] arrayEnteros;

Además, el número de “cajita” de un array se enumera de 0 a N-1, siendo N el tamaño del array.

Para crear un “array” del cual desconocemos su número de elementos de antemano, utilizaremos la clase Vector, que además de añadir esta mejora, ofrece métodos de inserción o borrado entre dos elementos, etc.

Por ejemplo, si quisiéramos cambiar el valor del tercer elemento de -2 a 0, haríamos lo siguiente:

arrayEnteros[2] = 0;

Los arrays pueden ser de más de una dimensión, pero para eso es mejor usar otros tipos, como las matrices.

Matriz

La matriz no es más que un array de dos dimensiones. Es, en definitiva cuenta, una tabla. Veamos mejor con un ejemplo su estructura y funcionamiento en Java.

int [][] matriz = {{2,4,5,6},{8,10,12,14},{16,18,20, 22}};

Lista

Las Listas (ArrayList) son también arrays dinámicos, como en el caso de los vectores, pero hay una serie de diferencias que hacen que ambos tipos de colecciones convivan en armonía.

Los vectores tienen la característica thread-safety. No entraremos mucho en el tema, pero hay una disciplina de la programación, la programación concurrente, por la que varios procesos pueden ejecutar al mismo tiempo un mismo código. En ese caso se comparten variables, cuestión que crea muchos problemas de inconsistencia de datos, interbloqueos, etc. Los vectores controlan internamente que nunca dos procesos toquen al mismo tiempo un elemento de su colección de datos.

Esta característica tan deseable en concurrencia tiene una desventaja, y es que las variables de tipo vector son más pesadas y ocupan más memoria. Por tanto, si sabemos que el conjunto de elementos no se va a ver afectado por la concurrencia, la opción de la Lista es más deseable”.

Estos son algunos de los tipos complejos de datos que podemos utilizar en Java, en nuestra siguiente sesión, veremos como manejar las Listas y tablas.

Bibliografía

Sinestro Corp. (s.f.). Informática frustrada. Recuperado el 15 de 07 de 2014, de http://informaticafrustrada.es/pildoritas-de-poo-y-java/