Tras haber repasado los apuntes, y ejercicios, de la programación en JAVA, en los que hemos visto una primera introducción y posteriormente las estructuras condicionales y repetitivas, ahora vamos a centrarnos en la figura de los ARRAYS.
Como ya he hecho en los apartados anteriores, si estás interesado en aprender Java desde 0, te recomiendo el libro de Luis José Sánchez, Aprende Java con Ejercicios, que fue una de las principales guías que utilizamos en nuestra clase de programación, impartida por Rafael del Castillo en el I.E.S. Gran Capitán.
Ahora bien, entrando en materia, veamos ¿qué son los Arrays?
Arrays de una dimensión
Un Array de una dimensión es lo que en matemáticas se entiende como un vector (nombre que evitaremos utilizar en Java al existir una clase que tiene este mismo nombre), ¿dicho de otro modo?
Un Array es un tipo de dato, que en su interior puede contener varios datos a los que podemos acceder mediante «índices», aunque hay que tener en cuenta, que en JAVA, estos datos deben ser todos del mismo tipo.
Cuando declaramos el array debemos indicar, tanto el tamaño que tendrá como el tipo de dato que almacenará:
String [] meses = new String[12];
En este ejemplo, estaríamos creando un array que contendría los meses en formato texto, y para ello, hemos declarado su tipo, y el espacio en memoria para las 12 posiciones.
Después podríamos acceder a cada espacio y asignarle un valor mediante los índices, teniendo en cuenta que las posiciones empiezan a contar desde 0.
Ejemplo:
meses[0] = "Enero";
meses[1] = "Febrero";
meses[2] = "Marzo";
meses[3] = "Abril";
meses[4] = "Mayo";
meses[5] = "Junio";
meses[6] = "Julio";
meses[7] = "Agosto";
meses[8] = "Septiembre";
meses[9] = "Octubre";
meses[10] = "Noviembre";
meses[11] = "Diciembre";
También podríamos haber creado este Array y asignado sus valores con la siguiente expresión:
String[] meses = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"};
Por ejemplo, si ahora quisiéramos imprimir en pantalla Mayo, podríamos hacerlo mediante System.out.println(meses[4]);
De esta forma, podemos tener en una misma variable una lista de valores que nos interesen, y que podremos recorrer por ejemplo mediante un ciclo for de la siguiente forma:
for (int i = 0; i <12; i++){
System.out.println(meses[i]);
}
Con esta sencilla instrucción nos imprimiría en pantalla los distintos meses del año.
Arrays bidimensionales
Como indicaba más arriba, un array de una única dirección, es lo que en matemáticas conocemos como vector, sin embargo, el array bidimensional podríamos equipararlo a una matriz, que se representaría con una cuadricula con filas y columnas.
Esto quiere decir, que en esta ocasión disponemos de dos coordenadas para los valores que almacenamos en este array, dispondría de un índice para las filas, y otro índice para las columnas.
Un array bidireccional se declara del siguiente modo:
String [][] diccionario = new String[3][2];
Como vemos, se declara de forma similar al unidireccional, tan sólo debemos añadir otro [] adicional, al que debemos asignar el número de espacios correspondiente.
En este caso, el ejemplo podría representar un diccionario Español-Inglés, que almacenaría tres combinaciones. En el primer [], se representa el número de filas que dispone este array, el segundo, es el número de columnas.
Se le podrían asignar valores tanto así:
diccionario[0][0] = "Hola";
diccionario[0][1] = "Hello";
diccionario[1][0] = "Gato";
diccionario[1][1] = "Cat";
diccionario[2][0] = "Perro";
diccionario[2][1] = "Dog";
También se podría asignar de la siguiente forma:
String[][] diccionario = {{"Hola", "Hello"}, {"Gato", "Cat"}, {"Perro", "Dog"}};
Para recorrer el Array, también lo podemos hacer mediante un bucle anidado, de modo que en uno recorramos las filas, y en el otro las columnas.
for (int i = 0; i < 3; i++){
for (int j = 0; i < 2; j++){
System.out.print(diccionario[i][j] );
}
System.out.println(" ");
}
Con esta instrucción imprimiría en pantalla primero la palabra en castellano, después en inglés, después imprimiría un salto de línea y pasaría a leer la siguiente fila.
Recorrer Arrays al estilo for each
El estilo for each de Java, nos permite recorrer los arrays sin miedo a cometer salidas de índice, ya que lo que indicaremos es el tipo de dato que se espera dentro del array y le asignaremos un nombre, volviendo al array meses, podemos recorrerlo de la siguiente forma:
for (String mes : meses) {
System.out.println(mes);
}
Como vemos, en la primera parte del for, indicamos el nombre de la variable que va a leer en cada ciclo, y en la segunda parte indicamos de qué array lo va a hacer.
De esta forma, la primera vez que realice el ciclo, automáticamente, mes leerá la cadena correspondiente al índice 0, la segunda al 1, y así sucesivamente hasta llegar al final. Cuando llega al final, tenga la cantidad que tenga de valores, finaliza automáticamente.