Un array è la raccolta di tipi simili di elementi archiviati in posizioni contigue nella memoria. Il vantaggio principale di un array è che possiamo accedere in modo casuale agli elementi dell'array, mentre non è possibile accedere in modo casuale agli elementi di un elenco collegato.
In Giava , Array sono tipi di dati mutabili, ovvero la dimensione dell'array è fissa e non possiamo aggiungere direttamente un nuovo elemento in Array. Tuttavia, esistono vari modi per aggiungere elementi all'array. Supponiamo di avere un array arr e di dovervi aggiungere elementi. Possiamo usare i seguenti metodi per aggiungere elementi ad arr.
- Creando un array di dimensioni maggiori rispetto a arr.
- Utilizzando ArrayList
- Spostando l'elemento per regolare la dimensione di arr.
Diamo uno sguardo all'interno dei modi che abbiamo descritto.
Creazione di un array di dimensioni maggiori
Per aggiungere elementi nell'array Java, possiamo creare un altro array di dimensioni maggiori e copiare tutti gli elementi dal nostro array a un altro array e posizionare il nuovo valore nell'ultimo dell'array appena creato. Tuttavia, non è un modo efficiente per aggiungere un elemento all'array. Nell'esempio seguente, un elemento 7 viene aggiunto all'array arr con l'aiuto di un array newArr appena creato. Considera il seguente esempio.
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('Array:'+Arrays.toString(arr)); ArrayList arrayList = new ArrayList(Arrays.asList(arr)); arrayList.add(7); arr = arrayList.toArray(arr); System.out.println('Array after adding element: '+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('Original Array: '+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;>
Produzione:
Array:[1, 2, 3, 4, 5, 6] Array after adding element: [1, 2, 3, 4, 5, 6, 7]
Spostamento degli elementi per regolare la dimensione dell'array
In questo metodo aggiungeremo gli elementi all'indice specificato nell'array. Allo stesso modo, i due processi precedenti utilizzeranno un nuovo array di destinazione con una dimensione maggiore rispetto all'array originale. Tuttavia, sarà complicato spostare gli elementi dell'array di destinazione dopo aver copiato tutti gli elementi dall'array originale all'array di destinazione.
In questo metodo, lo faremo,
- Crea un nuovo array di destinazione con dimensioni maggiori rispetto all'array originale.
- Copia tutti gli elementi dall'array originale al nuovo array di destinazione
- Sposta gli elementi dopo l'indice fornito verso destra finché non raggiunge la fine dell'array.
- Inserisci il nuovo elemento nell'indice specificato.
Considera il seguente esempio in cui aggiungeremo un valore specifico al dato indice 3 nell'array originale utilizzando un array di destinazione.
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('Original Array: '+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;>