En este capítulo te enseñaré todo lo que necesitas saber para empezar con los arrays en Java, incluyendo su creación, manipulación, iteración, acceso a elementos, clasificación y búsqueda. Pero primero, ¿qué es un array?
¿Qué es un array?
Un array, también conocido como arreglo, es una estructura de datos que puede almacenar una colección de elementos del mismo tipo. En Java, los arrays tienen un tamaño fijo que se define en el momento de su creación. Cada elemento del array se puede acceder mediante un índice numérico que representa su posición en el array. Ahora veamos cómo crearlos y manipularlos.
Creación de arrays en Java
Declarar un array en Java
Para declarar un array en Java, debes especificar su tipo y su tamaño:
int[] numeros = new int[4];
Este código crea un array de enteros (int) llamado «numeros» con un tamaño de 4 elementos. Puedes cambiar el tipo del array por cualquier otro tipo de dato, como String, double o boolean, según lo necesites.
Índice de los arrays
Este array está vacío, es como una variable normal, pero con cuatro espacios. Para rellenarlos, hay que asignarle datos a cada parte del contenedor.
Para asignar valores, tienes que utilizar el índice de los arrays. Funciona igual que el de los String. Se cuenta desde la posición 0 hasta la que tenga el array. En este caso, tiene cuatro espacios y, por lo tanto, el índice va del 0 al 3 (4 valores en total).
int[] numeros = new int[4]; numeros[0] = 10; numeros[1] = 20; numeros[2] = 30; numeros[3] = 40;
Así, la posición 0 del array tiene el valor 10, la 1, 20, la 2, 30 y la 3, 40.
Acceder a una posición del array
Después de almacenar valores, llega el momento de utilizarlos. Para usar uno de estos cuatro valores, lo haremos llamando al array y la posición que queramos:
int[] numeros = new int[4]; numeros[0] = 10; numeros[1] = 20; numeros[2] = 30; numeros[3] = 40; System.out.print("El valor de la primera posición del array es: " + numeros[0] + ".");
Resultado en la consola
El valor de la primera posición del array es: 10.
Declarar e inicializar array en Java
También puedes inicializar un array con valores específicos en el momento de su creación. Por ejemplo:
int[] numeros = {10, 20, 30, 40};
De esta forma, no hay que indicar la longitud, ya que los propios elementos la especifican. Si hay cuatro elementos, el array toma una longitud de índice de 4.
Manipulación de arrays en Java
Reasignar valores a los arrays de Java
Para reasignar valores a los array en Java, solo tienes que utilizar la misma técnica que usas con las variables normales, solo que en este caso, debes especificar que parte del array quieres modificar. Por ejemplo, vamos a cambiar el valor de la última posición:
int[] numeros = {10, 20, 30, 40}; System.out.println("El valor de la última posición del array es: " + numeros[3] + "."); numeros[3] = 4000; System.out.println("El valor de la última posición del array es: " + numeros[3] + ".");
Como podemos comprobar, los valores se reasignan correctamente.
Resultado en la consola
El valor de la última posición del array es: 40.
El valor de la última posición del array es: 4000.
Iterar arrays en Java
Acceder con bucle for a todos los elementos de un array
Se puede automatizar el acceso a todas las partes de un array con un bucle. En esta ocasión, voy a utilizar el bucle for.
int[] numeros = {10, 20, 30, 40}; for (int i = 0; i < numeros.length; i++) { System.out.println("El valor es: " + numeros[i] + "."); }
De valor en el iterador le doy un 0 y le digo que este valor aumente de uno en uno hasta la longitud total del array (length). El iterador se lo paso como posición en la llamada del array. Así, cada ciclo del bucle, va cambiando, 0, 1, 2 y 3.
Resultado en la consola
El valor es: 10.
El valor es: 20.
El valor es: 30.
El valor es: 40.
El bucle for each de Java
Sin embargo, desde hace ya bastante tiempo, se añadió una herramienta muy especial para este tipo de tareas tan frecuentes. Se trata del bucle for-each o enhanced loop.
int[] numeros = {10, 20, 30, 40}; for (int i : numeros) { System.out.println("El valor es: " + i + "."); }
El resultado es el mismo, y Java lo entiende correctamente. Solo hay que darle un nombre al iterador, dos puntos y el nombre del array que se quiere iterar de arriba a abajo. No hay que usar ni length ni incrementos. Es más cómo, limpio y fácil de escribir.
Ordenación de arrays
Otra de las típicas tareas con un array, es ordenarlos.
Ordenar arrays en orden ascendente
Primero, importa la clase Arrays del paquete java.util, necesitaremos utilizar su método sort().
import java.util.Arrays;
El siguiente array, tiene los valores desordenados. Quiero que a la hora de imprimirlos, estén bien ordenados en orden ascendente, de menor a mayor.
int[] numeros = {105, 7, 156, 40};
Si lo imprimimos así, efectivamente, se iteran los valores en el orden en el que se encuentran escritos.
int[] numeros = {105, 7, 156, 40}; for (int i : numeros) { System.out.println("El valor es: " + i + "."); }
Resultado en la consola
El valor es: 105.
El valor es: 7.
El valor es: 156.
El valor es: 40.
Para ordenarlos de manera ascendente, se puede utilizar el método sort() de la clase Arrays del paquete java.util:
int[] numeros = {105, 7, 156, 40}; Arrays.sort(numeros); for (int i : numeros) { System.out.println("El valor es: " + i + "."); }
Resultado en la consola
El valor es: 7.
El valor es: 40.
El valor es: 105.
El valor es: 156.
Ordenar arrays en orden descendente
Hay diversas formas de ordenar un array en orden descendente. Una de ellas, es utilizar la clase Collections en el sort(). Sin embargo, tiene un poco de complicación. No entraré todavía en detalles con estas cosas, pero lo voy a explicar un poco.
Primero, añade la importación de la clase Collections de java.util:
import java.util.Collections;
Ahora, utiliza dentro del sort() un segundo argumento, la llamada al método reverseOrder() de la clase Collections.
Integer [] numeros = {105, 7, 156, 40}; Arrays.sort(numeros, Collections.reverseOrder()); for (int i : numeros) { System.out.println("El valor es: " + i + "."); }
La declaración del array «int» deberá ser «Integer» para poder funcionar con Collections.
La explicación es un poco complicada y no creo conveniente explicarla todavía. Te diré la parte corta y simplificada.
Collections.reverseOrder() necesita un objeto para trabajar. Los valores int son valores primitivos. En cambio, los valores Integer son objetos que representan valores primitivos.
Resultado en la consola
El valor es: 156.
El valor es: 105.
El valor es: 40.
El valor es: 7.
Buscar elementos en un array de Java
Veamos una última cosa de las infinitas que hay con arrays. La búsqueda de elementos. En concreto, vamos a pasar un valor y Java nos dirá en que posición del índice del array se encuentra.
Le decimos como primer argumento el nombre del array. Como segundo, el valor que queremos buscar.
int[] numeros = {1, 2, 3, 4}; int indice = Arrays.binarySearch(numeros, 3); System.out.println("El elemento 3 está en la posición " + indice + " del índice.");
Resultado en la consola
El elemento 3 está en la posición 2 del índice.
No te pierdas nada del curso Máster en Java.