Aumentar el tamaño de un array en Java

Mohammad Irfan 12 octubre 2023
  1. Aumente el tamaño de un array creando otra matriz nueva en Java
  2. Aumente el tamaño del array utilizando el método Arrays.copyOf() en Java
  3. Aumente el tamaño del array utilizando el array ArrayList en Java
  4. Aumente el tamaño del array en Java
Aumentar el tamaño de un array en Java

Este tutorial presenta cómo aumentar el tamaño de un array en Java. También tiene algunos códigos de ejemplo para ayudarlo a comprender el tema.

un array en Java es una colección finita de datos del mismo tipo. Los arrays son de tamaño fijo y su longitud no se puede modificar después de su creación. Esto se debe a que los arrays se almacenan en la memoria como bloques de datos contiguos.

El usuario debe predefinir su tamaño para asegurarse de que la cantidad de memoria requerida esté disponible de forma contigua. En esta guía, conocerá las diferentes formas de abordar el problema de la longitud fija de los arrays.

Primero veamos qué sucede cuando intentamos agregar elementos a un array sin espacio adicional. Por lo general, agregamos elementos a un array accediendo a su índice. Si intentamos agregar un elemento a un array ya llena usando el siguiente índice, Java devolverá una ArrayIndexOutOfBoundsException.

El siguiente código es un ejemplo de tal escenario.

public class Main {
  public static void main(String[] args) {
    int[] arr = new int[3];
    arr[0] = 5;
    arr[1] = 10;
    arr[2] = 15;
    arr[3] = 20; // Index 3 is out of bounds
  }
}

Producción :

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
    at abc.Demo.main(Demo.java:13)

Ahora intentemos entender cómo superar este problema.

Aumente el tamaño de un array creando otra matriz nueva en Java

Una solución simple para el tamaño fijo del array es crear otra matriz con un tamaño mayor.

Podemos usar una variable de contador para realizar un seguimiento del número de elementos insertados en el array. Siempre que este número sea igual a la longitud del array (lo que indica que el array está llena), podemos crear una nueva matriz que sea un tamaño más grande que el array original.

A continuación, transferiremos todos los elementos del array original a la nueva matriz y aún tendremos un espacio adicional para un nuevo elemento. Podemos repetir este proceso si recibimos un elemento nuevo y no tenemos suficiente espacio para ello.

Considere el siguiente código donde creamos un array de longitud 5 e intentamos insertar elementos 7 en ella. Siempre que el array se llena, aumentamos su tamaño usando nuestro método increaseSize().

public class Main {
  public static int[] increaseSize(int[] arr) {
    int[] newArr = new int[arr.length + 1]; // Creating a new array with space for an extra element
    for (int i = 0; i < arr.length; i++) {
      newArr[i] = arr[i]; // Copying the elements to the new array
    }
    return newArr;
  }
  public static void main(String[] args) {
    int[] arr = new int[5];
    int counter = 0;
    for (int i = 0; i <= 6; i++) {
      if (counter == arr.length) {
        arr = increaseSize(arr);
      }
      arr[i] = i * 2;
      counter += 1;
    }
    for (int i = 0; i < arr.length; i++) {
      System.out.print(arr[i] + " ");
    }
  }
}

Producción :

0 2 4 6 8 10 12

Aumente el tamaño del array utilizando el método Arrays.copyOf() en Java

Java tiene un método copyOf() incorporado que puede crear una nueva matriz de un tamaño mayor y copiar nuestros elementos de array antiguos en la nueva.

La función copyOf() pertenece a la clase Arrays. La sintaxis de este método se muestra a continuación. Devuelve un array de la longitud mencionada que tiene todos los elementos del array original.

copyOf(originalArray, newLength)

El siguiente código es similar al mencionado anteriormente. La única diferencia es que estamos usando el método copyOf en lugar del método enlargeSize().

import java.util.Arrays;
public class Main {
  public static void main(String[] args) {
    int[] arr = new int[5];
    int counter = 0;
    for (int i = 0; i <= 6; i++) {
      if (counter == arr.length) {
        int[] newArr = Arrays.copyOf(arr, arr.length + 1);
        arr = newArr;
      }
      arr[i] = i * 2;
      counter += 1;
    }
    for (int i = 0; i < arr.length; i++) {
      System.out.print(arr[i] + " ");
    }
  }
}

Producción :

0 2 4 6 8 10 12

Aumente el tamaño del array utilizando el array ArrayList en Java

Una ArrayList es un array dinámica que se encuentra en el paquete java.util e implementa la interfaz List. A diferencia de un array normal, una ArrayList tiene una longitud variable.

Java maneja automáticamente el tamaño de esta matriz dinámica y no tenemos que preocuparnos por quedarnos sin espacio en el array. Su tamaño predeterminado es 10 elementos, pero aumentará de tamaño si se agregan más elementos.

La siguiente tabla a continuación explica algunas de las diferencias clave entre un array y una ArrayList.

Formación Lista de array
Los arrays no se pueden cambiar de tamaño y siempre tendrán una longitud fija después de la creación. ArrayList es un array de tamaño variable, y su tamaño aumentará dinámicamente si se requiere espacio adicional.
Los arrays pueden contener tanto objetos como tipos de datos primitivos. ArrayList solo puede almacenar objetos y no tipos de datos primitivos. Los tipos de datos primitivos se convierten en los objetos correspondientes antes de agregarlos a la lista. (int a Integer, double a Double)
El rendimiento de los arrays es mejor que el de ArrayList, ya que los elementos se pueden agregar, eliminar o recuperar utilizando índices en tiempo constante. Las ArrayLists son un poco más lentas que los arrays, ya que es necesario cambiar su tamaño si necesitamos espacio adicional.
Se puede acceder a un elemento utilizando su índice. Hay métodos dedicados como get(), set() o add() para acceder y modificar elementos en la ArrayList. No podemos utilizar directamente índices entre corchetes para acceder a elementos.

El siguiente código explica cómo usar ArrayLists y realizar operaciones básicas como agregar un elemento, modificar un elemento e imprimir los valores de la lista.

import java.util.ArrayList;
public class Main {
  public static void main(String[] args) { // Creating a new ArrayList to hold Integer values
    ArrayList<Integer> arrList = new ArrayList<Integer>();
    // Adding elements 5, 10, 15 and 20 to the ArrayList
    arrList.add(5);
    arrList.add(10);
    arrList.add(15);
    arrList.add(20);
    // Printing the ArrayList
    System.out.println(arrList);
    // Adding an element 7 at index 2. This will shift the rest of the elements one place to the
    // right
    arrList.add(2, 7);
    System.out.println(arrList);
    // Fetching the element at index 3
    System.out.println(arrList.get(3));
    // Changing the element present at index 1 to 17
    arrList.set(1, 17);
    System.out.println(arrList);
  }
}

Producción :

[5, 10, 15, 20]
[5, 10, 7, 15, 20]
15
[5, 17, 7, 15, 20]

El escenario en el que estábamos tratando de agregar elementos 7 a un array de longitud 5 se puede resolver fácilmente utilizando ArrayLists. Recuerde que no podemos usar tipos de datos primitivos como int en ArrayLists, por lo que usamos la clase contenedora, Integer.

import java.util.ArrayList;
public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> arrList = new ArrayList<Integer>();
    for (int i = 0; i <= 6; i++) {
      arrList.add(i * 2);
    }
    for (int i = 0; i < arrList.size(); i++) {
      System.out.print(arrList.get(i) + " ");
    }
  }
}

Producción :

0 2 4 6 8 10 12

Aumente el tamaño del array en Java

un array es una estructura de datos básica pero extremadamente importante y útil. Una limitación de los arrays es que son de tamaño fijo y su tamaño no puede aumentar de forma dinámica.

En este tutorial, aprendimos cómo aumentar el tamaño de un array. Podemos crear una nueva matriz de mayor tamaño y copiar el contenido del array anterior a la nueva. La mejor y más sencilla solución es utilizar ArrayLists, ya que pueden aumentar dinámicamente su tamaño.

Esperamos que esta guía haya sido de mucha ayuda y que haya aprendido algo nuevo en Java.

Artículo relacionado - Java Variable

Artículo relacionado - Java Array