Array en Java

¿Qué es array en Java?

Un arreglo en Java es una estructura de datos que permite almacenar una colección de elementos del mismo tipo. Los elementos de un arreglo se pueden acceder mediante su índice, el cual comienza en 0.

Los arreglos son objetos en Java y tienen un tamaño fijo una vez que son creados. Sin embargo, existen otras estructuras de datos como ArrayList que permiten agregar y eliminar elementos dinámicamente.

Los arreglos son útiles para almacenar datos de un solo tipo, como enteros, cadenas, objetos, etc. Los arreglos se pueden utilizar para almacenar una gran cantidad de datos en una sola variable. Por ejemplo, puede almacenar una lista de nombres, una lista de números, una lista de objetos, etc.

Algunos de los métodos más comunes en los arreglos son:

  • length: devuelve el número de elementos en el arreglo.
  • sort: ordena los elementos del arreglo.
  • fill: rellena el arreglo con un valor específico.
  • toString: devuelve una representación en cadena del arreglo.

Además, existen también clases de utilidad como Arrays que proporciona métodos estáticos para trabajar con arreglos, como búsqueda, ordenamiento y comparación.

Es importante tener en cuenta que al acceder a un índice que no existe en el arreglo, se lanzará una excepción ArrayIndexOutOfBoundsException. Por lo tanto, es importante verificar siempre que se está accediendo a un índice válido antes de intentar acceder a un elemento en un arreglo.

Crear un array en Java

Existen varias formas de crear un arreglo en Java.

Una forma es declarar el arreglo y asignarle un tamaño específico utilizando la palabra clave “new”:


int[] numeros = new int[10];

Lenguaje del código: Java (java)

Este arreglo tendrá un tamaño de 10 y todos sus elementos serán inicializados en 0 por defecto.

Otra forma es declarar el arreglo y asignarle valores específicos en el momento de la declaración:


int[] numeros = {1, 2, 3, 4, 5};

Lenguaje del código: Java (java)

Este arreglo tendrá un tamaño de 5 y sus elementos serán los especificados en la declaración.

También se puede declarar el arreglo y asignarle un tamaño específico y valores específicos en el momento de la declaración


int[] numeros = new int[]{1, 2, 3, 4, 5};

Lenguaje del código: Java (java)

También se puede crear un arreglo sin especificar su tamaño y luego asignarle los valores utilizando un bucle


int[] numeros;
numeros = new int[10];
for (int i = 0; i < numeros.length; i++) {
    numeros[i] = i * 2;
}

Lenguaje del código: Java (java)

En resumen, existen varias formas de crear un arreglo en Java, puedes declararlo y asignarle un tamaño específico o asignarle valores específicos en el momento de la declaración, o incluso hacer ambas cosas en una sola línea.

Acceder a los elementos de un Array

Para acceder a los elementos de un arreglo en Java, se utiliza el nombre del arreglo seguido de los corchetes “[ ]” con el índice del elemento deseado dentro de ellos. El primer elemento de un arreglo tiene índice 0, el segundo tiene índice 1, y así sucesivamente.

Por ejemplo, si queremos acceder al tercer elemento de un arreglo llamado “numeros”:


int[] numeros = {1, 2, 3, 4, 5};

int tercerElemento = numeros[2];

Lenguaje del código: Java (java)

También es posible utilizar una variable para acceder a un elemento específico del arreglo:


int[] numeros = {1, 2, 3, 4, 5};
int indice = 2;

int tercerElemento = numeros[indice];

Lenguaje del código: Java (java)

Mostrar elementos de un array

Para mostrar los elementos de un arreglo en Java, se pueden usar varias formas. Una forma es utilizando un ciclo para imprimir cada elemento del arreglo. Por ejemplo, si queremos mostrar los elementos de un arreglo de enteros llamado “numeros”:


int[] numeros = {1, 2, 3, 4, 5};

for (int i = 0; i < numeros.length; i++) {
    System.out.println(numeros[i]);
}

Lenguaje del código: Java (java)

Otra forma es utilizar la clase Arrays de Java, la cual cuenta con el método toString() que permite imprimir todo el contenido del array, separando cada elemento con una coma.


int[] numeros = {1, 2, 3, 4, 5};

System.out.println(Arrays.toString(numeros));

Lenguaje del código: Java (java)

También se puede utilizar un for each, es una forma más corta de recorrer un array.


int[] numeros = {1, 2, 3, 4, 5};

for (int numero : numeros) {
    System.out.println(numero);
}

Lenguaje del código: Java (java)

En este ejemplo, se crea un arreglo de enteros llamado “numeros” con los valores 1, 2, 3, 4 y 5. Luego, se utiliza un for each para recorrer el arreglo y se imprime cada elemento en una línea diferente.

1
2
3
4
5Lenguaje del código: texto plano (plaintext)

Modificar los datos de un Array

Modificar los datos de un array en Java se refiere a cambiar los valores almacenados en cada una de las posiciones del array.

Esto se puede hacer de varias maneras, pero principalmente se utilizan dos formas: accediendo directamente a una posición específica del array mediante su índice, o recorriendo todas las posiciones del array mediante un ciclo (for, while, for-each) y modificando cada una de las posiciones que cumplan una determinada condición.

Por ejemplo, si queremos cambiar el valor del tercer elemento de un arreglo llamado “numeros” a 10, podemos acceder directamente a la posición 2 (índice) del array y asignarle el nuevo valor:


int[] numeros = {1, 2, 3, 4, 5};

numeros[2] = 10;

Otro ejemplo, si queremos multiplicar por 2 cada elemento del arreglo “numeros” podemos recorrer cada posición del array mediante un ciclo for y multiplicar cada elemento:


int[] numeros = {1, 2, 3, 4, 5};

for (int i = 0; i < numeros.length; i++) {
    numeros[i] = numeros[i] * 2;
}

Lenguaje del código: Java (java)

También se puede utilizar un for each para recorrer el array y modificar cada elemento, si queremos sumar 1 a cada elemento del array “numeros”:


int[] numeros = {1, 2, 3, 4, 5};

for (int i=0; i < numeros.length; i++) {
    numeros[i] += 1;
}

Lenguaje del código: Java (java)

Es importante tener en cuenta que al modificar los datos de un array, se están cambiando los valores almacenados en la memoria, por lo que estos cambios son permanentes.

Además, es importante mencionar que en Java, los arrays son objetos estáticos, una vez que se especifica su tamaño, no se puede modificar, si se desea aumentar o disminuir su tamaño es necesario crear un nuevo array y copiar los elementos desde el array antiguo al nuevo.

Longitud de un Array

Para conocer la longitud de un array en Java, se utiliza la propiedad “length”. La propiedad length es un atributo de todos los arrays en Java, y devuelve el número de elementos que contiene el array.

Por ejemplo, si queremos conocer la longitud de un array llamado “numeros”:


int[] numeros = {1, 2, 3, 4, 5};

int longitud = numeros.length;

Lenguaje del código: Java (java)

También se puede utilizar la propiedad length directamente en una expresión, por ejemplo, para imprimir la longitud de un array:


int[] numeros = {1, 2, 3, 4, 5};

System.out.println("La longitud del array es: " + numeros.length);

Lenguaje del código: Java (java)

Es importante mencionar que la propiedad length es de solo lectura, no se puede asignar un valor a ella, ya que la longitud de un array es una característica del mismo y no puede ser modificada.

Ordenar array en Java

Existen varias formas de ordenar un array en Java. Una de las formas más comunes es utilizando el método sort() de la clase Arrays. Este método recibe como parámetro el array que se desea ordenar.

Por defecto, el método sort() utiliza el orden natural de los elementos del array, es decir, el orden natural de los objetos si son de una clase personalizada o el orden lexicográfico si son de un tipo primitivo (como String o int).

Por ejemplo, si queremos ordenar un array de enteros llamado “numeros”:


int[] numeros = {3,1,4,2,5};
Arrays.sort(numeros);

Lenguaje del código: Java (java)

También se puede ordenar un array de objetos de una clase personalizada utilizando un comparador personalizado. Por ejemplo, si queremos ordenar un array de objetos de la clase Persona por edad:


class Persona {
    int edad;
    String nombre;
    // constructor, getters y setters
}

Persona[] personas = {new Persona(25,"Juan"), new Persona(30,"Maria"), new Persona(20,"Pedro")};
Arrays.sort(personas, new Comparator<Persona>() {
    @Override
    public int compare(Persona p1, Persona p2) {
        return p1.getEdad() - p2.getEdad();
    }
});

Lenguaje del código: Java (java)

Si se quiere ordenar por otro atributo se tiene que modificar el compare


Arrays.sort(personas, new Comparator<Persona>() {
    @Override
    public int compare(Persona p1, Persona p2) {
        return p1.getNombre().compareTo(p2.getNombre());
    }
});

Lenguaje del código: Java (java)

Además, también existen otras formas de ordenar un array en Java, como el uso de algoritmos de ordenamiento como el algoritmo de ordenamiento burbuja o el algoritmo de ordenamiento quicksort.

Más ejemplos

Aquí hay algunos ejemplos adicionales de cómo trabajar con arrays en Java:

  1. Crear un array de enteros de tamaño 5 e inicializar todos sus elementos en 0:

int[] enteros = new int[5];

Lenguaje del código: Java (java)
  1. Crear un array de cadenas de tamaño 3 e inicializar sus elementos con valores específicos:

String[] nombres = new String[] {"Juan", "Pedro", "Maria"};

Lenguaje del código: Java (java)
  1. Crear un array bidimensional (matriz) de enteros de 3 filas y 4 columnas e inicializar todos sus elementos en 0:

int[][] matriz = new int[3][4];

Lenguaje del código: Java (java)
  1. Crear un array de objetos de una clase personalizada:

Persona[] personas = new Persona[5];

Lenguaje del código: Java (java)
  1. Recorrer un array utilizando un ciclo for mejorado (for-each) y mostrar cada elemento:

for (int numero : numeros) {
    System.out.println(numero);
}

Lenguaje del código: Java (java)
  1. Encontrar el elemento máximo en un array de enteros:

int maximo = Integer.MIN_VALUE;
for (int i = 0; i < numeros.length; i++) {
    if (numeros[i] > maximo) {
        maximo = numeros[i];
    }
}
System.out.println("El valor máximo es: " + maximo);

Lenguaje del código: Java (java)
  1. Ordenar un array de enteros utilizando el método sort de la clase Arrays:

Arrays.sort(numeros);

Lenguaje del código: Java (java)
  1. Copiar un array a otro utilizando el método copyOf de la clase Arrays:

int[] copiaNumeros = Arrays.copyOf(numeros, numeros.length);

Lenguaje del código: Java (java)

Espero que estos ejemplos te ayuden a entender mejor cómo trabajar con arrays en Java. Si tienes alguna pregunta adicional, no dudes en preguntar.

Ejemplo avanzado de Array

A continuación te presento un ejemplo avanzado de cómo trabajar con arrays en Java, que incluye una clase personalizada y varias operaciones comunes como la búsqueda, ordenamiento y eliminación de elementos:


import java.util.Arrays;

class Persona {
    private String nombre;
    private int edad;

    public Persona(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }

    public String getNombre() {
        return nombre;
    }

    public int getEdad() {
        return edad;
    }

    public String toString() {
        return nombre + " - " + edad + " años";
    }
}

public class ArrayEjemplo {
    public static void main(String[] args) {
        // Crear un array de objetos Persona
        Persona[] personas = new Persona[] {
                new Persona("Juan", 30),
                new Persona("Pedro", 25),
                new Persona("Maria", 35),
                new Persona("Ana", 20)
        };

        // Mostrar todos los elementos del array
        System.out.println("Lista de personas:");
        for (Persona persona : personas) {
            System.out.println(persona);
        }

        // Buscar una persona por nombre
        String nombreABuscar = "Maria";
        Persona personaEncontrada = null;
        for (Persona persona : personas) {
            if (persona.getNombre().equals(nombreABuscar)) {
                personaEncontrada = persona;
                break;
            }
        }
        if (personaEncontrada != null) {
            System.out.println("La persona " + nombreABuscar + " ha sido encontrada: " + personaEncontrada);
        } else {
            System.out.println("La persona " + nombreABuscar + " no ha sido encontrada.");
        }

        // Ordenar el array por edad utilizando un comparador personalizado
        Arrays.sort(personas, (p1, p2) -> p1.getEdad() - p2.getEdad());
        System.out.println("Lista de personas ordenadas por edad:");
        for (Persona persona : personas) {
            System.out.println(persona);
        }

        // Eliminar un elemento del array
        int indiceAEliminar = 1;
        for (int i = indiceAEliminar; i < personas.length - 1; i++) {
            personas[i] = personas[i + 1];
        }
        personas = Arrays.copyOf(personas, personas.length - 1);
        System.out.println("Lista de personas después de eliminar el elemento en la posición " + indiceAEliminar + ":");
        for (Persona persona : personas) {
    System.out.println(persona);
    }

    // Saber la longitud del Array
    System.out.println("Longitud del Array: " + personas.length);
}

Lenguaje del código: Java (java)

En resumen, en este ejemplo se crea una clase personalizada Persona con atributos nombre y edad. Luego se crea un array de objetos de la clase Persona, se muestran todos los elementos del array mediante un bucle for each,

Además, busca una persona por nombre y se muestra si se encuentra o no. También se ordena el array por edad utilizando un comparador personalizado.

Por último se elimina un elemento del array y finalmente se muestra la longitud del array.