logo

Agregar elementos a Array en Java

Una matriz es una colección de tipos similares de elementos almacenados en ubicaciones contiguas de la memoria. La principal ventaja de una matriz es que podemos acceder aleatoriamente a los elementos de la matriz, mientras que no se puede acceder aleatoriamente a los elementos de una lista vinculada.

En Java , matrices son tipos de datos mutables, es decir, el tamaño de la matriz es fijo y no podemos agregar directamente un nuevo elemento en la matriz. Sin embargo, existen varias formas de agregar elementos a la matriz. Supongamos que tenemos una matriz arr y necesitamos agregarle elementos. Podemos utilizar los siguientes métodos para agregar elementos a arr.

  1. Al crear una matriz de mayor tamaño que arr.
  2. Usando ArrayList
  3. Cambiando el elemento para ajustar el tamaño del arr.

Echemos un vistazo al interior de las formas que hemos descrito.

Creando una matriz de mayor tamaño

Para agregar elementos en la matriz de Java, podemos crear otra matriz de mayor tamaño y copiar todos los elementos de nuestra matriz a otra matriz y colocar el nuevo valor al final de la matriz recién creada. Sin embargo, no es una forma eficaz de agregar un elemento a la matriz. En el siguiente ejemplo, se agrega un elemento 7 a la matriz arr con la ayuda de una matriz newArr recién creada. Considere el siguiente ejemplo.

 import java.util.Arrays; public class ArrayExample { public static void main(String[] args) { // TODO Auto-generated method stub int arr[] = {1,2,3,4,5,6}; int n = arr.length; int newArr[] = new int[n+1]; int value = 7; System.out.println(Arrays.toString(arr)); for(int i = 0; i<n; i++) { newarr[i]="arr[i];" } newarr[n]="value;" system.out.println(arrays.tostring(newarr)); < pre> <h3>Using ArrayList</h3> <p>We can use <a href="/java-arraylist">ArrayList</a> as the intermediate structure and add the elements into the ArrayList using the add () method. ArrayList is a data structure that allows us to dynamically add elements. However, we can convert the ArrayList to the array by using the toArray() method. Hence this process involves the following steps.</p> <ol class="points"> <li>Convert Array into ArrayList using asList() method.</li> <li>Add elements into the array list using the add() method.</li> <li>Convert the ArrayList again to the array using the toArray() method.</li> </ol> <p>Consider the following example.</p> <pre> import java.util.ArrayList; import java.util.Arrays; public class JavaAddElementUsingList { public static void main(String[] args) { // TODO Auto-generated method stub Integer arr[] = {1,2,3,4,5,6}; System.out.println(&apos;Array:&apos;+Arrays.toString(arr)); ArrayList arrayList = new ArrayList(Arrays.asList(arr)); arrayList.add(7); arr = arrayList.toArray(arr); System.out.println(&apos;Array after adding element: &apos;+Arrays.toString(arr)); } } </pre> <p> <strong>Output:</strong> </p> <pre> Array:[1, 2, 3, 4, 5, 6] Array after adding element: [1, 2, 3, 4, 5, 6, 7] </pre> <h3>Shifting elements to adjust the size of the array</h3> <p>In this method, we will add the elements to the specified index in the array. Likewise, the above two processes will use a new destination array with a larger size than the original array. However, it will be tricky to shift the destination array elements after copying all elements from the original array to destination array.</p> <p>In this method, we will,</p> <ol class="points"> <li>Create a new destination array with a larger size than the original array.</li> <li>Copy all the elements from the original array to the new destination array</li> <li>Shift the elements after the given index to the right until it reaches the end of the array.</li> <li>Insert the new element at the given index.</li> </ol> <p>Consider the following example in which we will add a specific value at the given index 3 in the original array using a destination array.</p> <pre> import java.util.Arrays; public class JavaAddElementArraySpecified { public static void main(String[] args) { Integer arr[] = {1,2,3,4,5,6}; int n = arr.length; int index = 3; System.out.println(&apos;Original Array: &apos;+Arrays.toString(arr)); Integer newArr[] = new Integer[n+1]; int j = 0; for(int i = 0; i<newarr.length; i++) { if(i="=index)" newarr[i]="7;" }else j++; } newarr[index]="7;" system.out.println('array after adding value: '+arrays.tostring(newarr)); < pre> <p> <strong>Output:</strong> </p> <pre> Original Array: [1, 2, 3, 4, 5, 6] Array after adding value: [1, 2, 3, 7, 4, 5, 6] </pre> <hr></newarr.length;></pre></n;>

Producción:

 Array:[1, 2, 3, 4, 5, 6] Array after adding element: [1, 2, 3, 4, 5, 6, 7] 

Cambiar elementos para ajustar el tamaño de la matriz

En este método, agregaremos los elementos al índice especificado en la matriz. Asimismo, los dos procesos anteriores utilizarán una nueva matriz de destino con un tamaño mayor que la matriz original. Sin embargo, será complicado cambiar los elementos de la matriz de destino después de copiar todos los elementos de la matriz original a la matriz de destino.

En este método, lo haremos

  1. Cree una nueva matriz de destino con un tamaño mayor que la matriz original.
  2. Copie todos los elementos de la matriz original a la nueva matriz de destino
  3. Mueva los elementos después del índice dado hacia la derecha hasta que llegue al final de la matriz.
  4. Inserte el nuevo elemento en el índice dado.

Considere el siguiente ejemplo en el que agregaremos un valor específico en el índice 3 dado en la matriz original usando una matriz de destino.

 import java.util.Arrays; public class JavaAddElementArraySpecified { public static void main(String[] args) { Integer arr[] = {1,2,3,4,5,6}; int n = arr.length; int index = 3; System.out.println(&apos;Original Array: &apos;+Arrays.toString(arr)); Integer newArr[] = new Integer[n+1]; int j = 0; for(int i = 0; i<newarr.length; i++) { if(i="=index)" newarr[i]="7;" }else j++; } newarr[index]="7;" system.out.println(\'array after adding value: \'+arrays.tostring(newarr)); < pre> <p> <strong>Output:</strong> </p> <pre> Original Array: [1, 2, 3, 4, 5, 6] Array after adding value: [1, 2, 3, 7, 4, 5, 6] </pre> <hr></newarr.length;>