Arrays estáticos en Java Parte II

COMPARTIR EN REDES SOCIALES

En esta entrada vamos a ver algunas operaciones que podemos realizar con Java sobre Arrays de forma muy sencilla utilizando la clase Arrays.

Veremos lo siguiente:

  1. Ordenación de los elementos de los Arrays
  2. Búsqueda de un elemento en Arrays
  3. Redimensionar un Array copiando todos los valores
  4. Comparar si un Array es igual a otro Array

1. Ordenación de los elementos de los Arrays

//Definicion e Instanciacion
int [] misNumeros = new int[10];
		
//Asignacion
misNumeros[0] = 3;
misNumeros[1] = 1;
misNumeros[2] = 100;
misNumeros[3] = 33;
misNumeros[4] = 22;
misNumeros[5] = 78;
misNumeros[6] = 90;
misNumeros[7] = 55;
misNumeros[8] = 53;
misNumeros[9] = 12;
		
//Mostramos el Array sin Ordenar
System.out.println("Array sin ordenar");
for (int numero: misNumeros) {
    System.out.print(numero + " ");
}
System.out.println("\nArray Ordenado");
//Mediante esta sentencia ordenamos el Array
Arrays.sort(misNumeros);
//Mostramos el resultado del Array ordenado
for (int numero: misNumeros) {
    System.out.print(numero + " ");
}

Salida del programa:

Array sin ordenar
3 1 100 33 22 78 90 55 53 12
Array Ordenado
1 3 12 22 33 53 55 78 90 100

Con una única sentencia hemos ordenado el Array completamente de menor a mayor:

Arrays.sort(misNumeros);

2. Búsqueda de un elemento en Arrays

Para buscar un determinado elemento en un Array también podemos hacerlo mediante Java sin tener que realizar nosotros el algoritmo, Java utiliza el algoritmo de búsqueda binaria, que es uno de los algoritmos de búsqueda más eficientes conocidos a día de hoy. Cabe destacar que es importante que nuestro Array esté ordenado, de lo contrario el algoritmo no funcionará correctamente.

//Definicion e Instanciacion
int [] misNumeros = new int[10];
		
//Asignacion
misNumeros[0] = 3;
misNumeros[1] = 1;
misNumeros[2] = 100;
misNumeros[3] = 33;
misNumeros[4] = 22;
misNumeros[5] = 78;
misNumeros[6] = 90;
misNumeros[7] = 55;
misNumeros[8] = 53;
misNumeros[9] = 12;
		
//Vamos a realizar una busqueda binaria
Arrays.sort(misNumeros);
int posicionElemento = Arrays.binarySearch(misNumeros, 33);
System.out.println("La posicion del elemento es: " + posicionElemento);
//Buscamos un elemento que no existe
posicionElemento = Arrays.binarySearch(misNumeros, 35);
System.out.println("La posicion del elemento es: " + posicionElemento);

Salida del programa

La posicion del elemento es: 4
La posicion del elemento es: -6

Si os fijáis lo primero que hemos realizado ha sido ordenar el Array, posteriormente hemos realizado una búsqueda binaria de un elemento existente y otra búsqueda de un elemento no existente. Siempre que obtengamos un número positivo como salida de la función es porque el número se encuentra dentro del conjunto, si no se encuentra el número buscado siempre devolverá un valor negativo, como en el ejemplo.

Es importante destacar que se puede utilizar dicho algoritmo de búsqueda binaria sobre todos los tipos de datos primitivos de java, tal y como se puede apreciar en la siguiente imagen:

Métodos disponibles en JavaDoc para la clase Arrays
JavaDoc de la clase Arrays

3. Redimensionar un Array copiando todos los valores

Supongamos que hemos creado un Array con memoria estática de 10 posiciones y nos hemos dado cuenta de que ahora necesitamos redimensionar dicho Array a 20 posiciones, lo podemos hacer también con la clase Arrays.

//Definicion e Instanciacion
int [] misNumeros = new int[10];
		
//Asignacion
misNumeros[0] = 3;
misNumeros[1] = 1;
misNumeros[2] = 100;
misNumeros[3] = 33;
misNumeros[4] = 22;
misNumeros[5] = 78;
misNumeros[6] = 90;
misNumeros[7] = 55;
misNumeros[8] = 53;
misNumeros[9] = 12;
		
//Realizamos la copia y redimensión
misNumeros = Arrays.copyOf(misNumeros, 20);
//Imprimimos los valores
for (int numero: misNumeros) {
	System.out.print(numero + " ");
}
System.out.println();
//Rellenamos todas las posiciones restantes hasta 20
misNumeros[10] = 7;
misNumeros[11] = 10;
misNumeros[12] = 13;
misNumeros[13] = 16;
misNumeros[14] = 19;
misNumeros[15] = 22;
misNumeros[16] = 25;
misNumeros[17] = 28;
misNumeros[18] = 31;
misNumeros[19] = 34;
		
//Imprimimos de nuevo los valores
for (int numero: misNumeros) {
	System.out.print(numero + " ");
}
System.out.println();

Salida del programa

3 1 100 33 22 78 90 55 53 12 0 0 0 0 0 0 0 0 0 0
3 1 100 33 22 78 90 55 53 12 7 10 13 16 19 22 25 28 31 34

Hay que fijarse que después de la redimensión hemos impreso el contenido del array, desde la posición 10 hasta 20 tiene contenido de 0 por defecto. Acto seguido hemos rellenado todo el Array con números nuevos y hemos vuelto a imprimir el contenido.

Al igual que en el caso anterior la redimensión se puede hacer con Arrays de todos los tipos.

4. Comparar si un Array es igual a otro Array

También en la clase Arrays de Java existe un método que nos permite comparar si 2 Arrays son iguales. Vamos a ver un pequeño ejemplo.

//Definicion e Instanciacion
int [] misNumeros = new int[10];
int [] misNumeros2 = new int [10];
		
//Asignacion misNumeros
misNumeros[0] = 3;
misNumeros[1] = 1;
misNumeros[2] = 100;
misNumeros[3] = 33;
misNumeros[4] = 22;
misNumeros[5] = 78;
misNumeros[6] = 90;
misNumeros[7] = 55;
misNumeros[8] = 53;
misNumeros[9] = 12;
		
//Asignacion misNumeros2
misNumeros2[0] = 3;
misNumeros2[1] = 1;
misNumeros2[2] = 100;
misNumeros2[3] = 33;
misNumeros2[4] = 22;
misNumeros2[5] = 78;
misNumeros2[6] = 90;
misNumeros2[7] = 55;
misNumeros2[8] = 53;
misNumeros2[9] = 12;
		
//Comparamos los arrays
if (Arrays.equals(misNumeros, misNumeros2) == true) {
	System.out.println("Los arrays son iguales");
}
		
//cambiamos un valor
misNumeros[2] = 9;
//Volvemos a comparar ambos Arrays
if (Arrays.equals(misNumeros, misNumeros2) == false) {
	System.out.println("Los arrays NO son iguales");
}

Salida del programa:

Los arrays son iguales
Los arrays NO son iguales

Si os fijáis hemos creado 2 Arrays, hemos asignado los mismos números, hemos comparado si son iguales, en la salida hemos visto que efectivamente son iguales. Hemos cambiado un número del primer Array, los hemos vuelto a comparar y esto ya hace que estas no sean iguales.

Si te ha gustado este artículo no dudes en leer la entrada sobre Arrays con memoria dinámica.

Si te ha gustado el artículo deja un comentario en la caja de comentarios para apoyar el blog!


COMPARTIR EN REDES SOCIALES

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *