Arreglos
Los arreglos son una estructura de datos compuesta que nos permite almacenar un conjunto de datos con la condición de que todos sean del mismo tipo. Si creamos un arreglo de tipo String, únicamente podremos agregar valores de tipo String.
Estos pueden tener varias dimensiones, cuando son unidimensionales son conocidos como vectores, los bidimencionales, que también se les conoce como matrices y los multidimensionales, de tres dimensiones o más.
Es posible crear arreglos de cualquier dimensión y de cualquier tipo de dato, ya sean primitivos o compuestos. Incluso podemos hacer combinaciones de ellos gracias al polimorfismo.
Representación gráfica
Una de las maneras más comunes de representar a los arreglos unidimensionales es con un tren. Como sabemos, un tren tiene vagones y en cada vagón hay un contenido. Bueno, pues en los arreglos es muy similar, el tamaño está determinado por la cantidad de elementos (vagones) que puede almacenar, estos son el espacio reservado para los datos. Y el contenido es el valor en sí que estamos guardando en cada vagón.
Como podemos ver en la imagen, cada vagón es la representación de una celda de nuestro arreglo, y un arreglo puede tener N celdas. Cada dato que guardemos se almacena en una celda en particular.
Para acceder a los valores almacenados en los arreglos, tenemos que hacerlo a través de la celda que lo contenga. Cada celda tiene un índice así como se muestra en la imagen. Es importante mencionar que las posiciones de los arreglos empiezan en cero. Por lo tanto la primer celda de todos los arreglos es la número cero, no la uno.
¿Para qué sirven?
Los arreglos se utilizan para muchas cosas y dependenderá del problema que estemos resolviendo. Podemos hacer un arreglo de enteros para las calificaciones de los alumnos, arreglos de cadenas de caracteres para los nombres de animales salvajes o domésticos, otro de productos de tiendas departamentales, etc. Las posibilidades son infinitas.
¿Por qué utilizarlos?
Dado que los arreglos son un tipo de dato compuesto, tenemos la posibilidad de tener información estructurada y agrupada que esté relacionada entre sí. De esta forma mejoramos nuestro código, es más entendible y es más fácil darle un tratamiento y un uso a la información contenida.
Creación de arreglos
Para crear un arreglo, necesitamos principalmente conocer 3 cosas: La cantidad de datos que queramos almacenar, el tipo de dato de la información que guardemos y si tenemos previamente los datos que vamos a guardar.
En Java existen dos maneras de crear los arreglos, la primera es definiendo los datos que va a contener y la segunda, definiendo la cantidad de datos que pueda almacenar.
Arreglos literales
Empecemos creando un arreglo con los datos que contendrá.
Character[] vocales = {'a', 'e', 'i', 'o', 'u'};
Podemos notar que el arreglo es de tipo Character, por lo tanto solamente puede almacenar datos que sean del mismo tipo. Seguido del tipo de dato, están unos corchetes [] que sirven para indicar que se trata de un arreglo de una dimensión. Posteriormente, sigue el nombre con el cual vamos a identificar al vector, en este caso se llama vocales. Y como este es un arreglo literal, debido a que ya conocemos los valores a almacenar, estos tienen que ser definidos posteriormente al operador de asignación y entre llaves (respetando el tipo de dato).
Dado que son una estructura de datos de tamaño fijo, si posteriormente queremos cambiar el tamaño del arreglo por uno más grande o pequeño, no será posible y tendremos que crear uno nuevo.
Ya hemos creado un arreglo de una dimensión con 5 datos almacenados, una representación gráfica podría ser de esta forma:
Con esto hemos creado un arreglo de 5 elementos de tipo Character. El tamaño fue definido implícitamente al especificar los datos que contiene. En la imagen aparecen las posiciones del arreglo que utilizaremos para acceder a los datos. (Más adelante veremos cómo hacerlo). Observa que la posición cero del arreglo vocales almacena el valor a. Y así sucesivamente.
Arreglos por tamaño
La otra opción para crear arreglos es solamente definiendo la cantidad de elementos que podrá almacenar sin especificar los datos. La sintaxis es la siguiente:
String[] mascotas = new String[5];
Ahora hemos creado un arreglo de una dimensión que puede almacenar hasta 5 valores de tipo String. Al hacerlo de esta forma es necesario utilizar la palabra reservada new y especificar el tipo de dato del arreglo seguido de la cantidad de elementos a almacenar entre corchetes.
Al crearlos de esta manera, una representación gráfica podría verse así:
Ahora, el arreglo creado únicamente tiene el espacio reservado para almacenar valores de tipo String, pero no hay ningún dato en las posiciones del arreglo.
Nota importante: Los valores en cada celda son definidos por los valores por defecto del tipo de dato, en el caso de los tipos primitivos cada uno tiene un valor en particular y para objetos siempre será null.
Bien, ya sabemos cómo podemos crear nuestros arreglos. ¿Ahora cómo podemos acceder a la información almacenada?
Lectura de Arreglos
Como lo hemos mencionado anteriormente, para acceder a los datos almacenados, debemos de especificar la posición de la celda a la cual queremos acceder.
Usaremos como ejemplo el siguiente arreglo literal de tipo int.
int[] numerosPrimos = {2, 3, 5, 7, 11, 13};
Dado que las posiciones comienzan en cero, para acceder al primer valor del arreglo de numerosPrimos, basta con especificar la posición y tendremos como respuesta el valor contenido.
int primerElemento = numerosPrimos[0];
En el código anterior, estamos obteniendo el valor de la posición cero del arreglo numerosPrimos y lo estamos guardando en la variable primerElemento, si imprimimos el valor en consola, veremos que tenemos el número dos. También podemos hacerlo sin necesidad de almacenarlo en una variable.
System.out.println("Valor de primerElemento: " + primerElemento);
System.out.println("Valor de posición cero: " + numerosPrimos[0]);
Teniendo como salida lo siguiente:
Valor de primerElemento: 2 Valor de posición cero: 2
Así podremos obtener los valores almacenados en las diferentes posiciones de nuestro arreglo, hay que tener cuidado de que la posición que especifiquemos realmente exista, o tendremos como resultado una excepción de tipo ArrayIndexOutOfBoundsException.
Modificación de Arreglos
La modificación de los arreglos, consiste en alterar la información almacenada en las diversas posiciones que contenga. El tamaño del arreglo que fue establecido al momento de su creación no puede ser modificado.
Retomaremos el arreglo de vocales para realizar la modificación de la información:
Character[] vocales = {'a', 'e', 'i', 'o', 'u'};
Vamos a modificar el dato que contiene la celda en la posición 2 del arreglo. Actualmente vocales[2] contiene el valor 'i', pero lo cambiaremos por 'x'.
vocales[2] = 'x';
¡Listo! Basta con especificar el nombre del arreglo y entre corchetes la posición a la cual queremos acceder y asignarle un nuevo valor. Este valor debe de ser el mismo que el tipo de dato con el cual se definió el arreglo.
Si accedemos ahora a esa posición, notaremos que tiene el valor de 'x' que le acabamos de asignar.
System.out.println("Valor de posición dos: " + vocales[2]);
Teniendo como salida:
Valor de posición dos: x
Así de sencillo podemos modificar la información de nuestros arreglos.
Iteración de Arreglos
También es posible recorrer los arreglos de principio a fin, obteniendo el valor contenido en cada una de sus celdas, a esto se le conoce como iteración, y se realiza a través de secuencias de control repetitivas. Veremos un ejemplo con el ciclo for, que es el más común.
for(int i=0; i < vocales.length; i++) {
System.out.println("Elemento: " + vocales[i]);
}
Al ejecutar el código anterior, tendremos el siguiente resultado:
Elemento: a Elemento: e Elemento: x Elemento: o Elemento: u
En el ciclo for estamos inicializando la variable i con el valor de cero, para empezar en la primer posición del arreglo, las iteraciones continuarán mientras i sea menor a la longitud del arreglo, este valor es el tamaño con el que lo creamos, en este caso es 5, porque tiene 5 elementos, por lo tanto el ciclo terminará cuando el valor de i ya no cumpla esa condición. Y el incremento va de uno en uno. De esta forma recorremos completamente el arreglo e imprimimos su valor en consola.
Conclusión
Los arreglos son una estructura de datos compuesta que nos permite almacenar información del mismo tipo de dato con la finalidad de agruparla y de utilizarla posteriormente. Es posible realizar diferentes operaciones sobre ellos, como es la creación, la lectura y la modificación.
No olvides visitar nuestra cuenta de Instagram @codigazosit
Te compartimos nuestra colección de Arreglos por si tienes alguna duda o comentario.