Inizializzazione di array in Java

1. Panoramica

In questo breve tutorial, vedremo i diversi modi in cui possiamo inizializzare un array e le sottili differenze tra questi.

2. Un elemento alla volta

Cominciamo con un semplice metodo basato su loop:

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

E vediamo anche come inizializzare un array multidimensionale un elemento alla volta:

for (int i = 0; i < 2; i++) { for (int j = 0; j < 5; j++) { array[i][j] = j + 1; } }

3. Al momento della dichiarazione

Inizializziamo ora un array al momento della dichiarazione:

String array[] = new String[] { "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" };

Durante la creazione di un'istanza dell'array, non è necessario specificarne il tipo:

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

Si noti che non è possibile inizializzare un array dopo la dichiarazione utilizzando questo approccio. Un tentativo in tal senso provocherà un errore di compilazione.

4. Utilizzo di Arrays.fill ()

La classe java.util.Arrays ha diversi metodi chiamati fill () che accettano diversi tipi di argomenti e riempiono l'intero array con lo stesso valore:

long array[] = new long[5]; Arrays.fill(array, 30);

Il metodo ha anche diverse alternative che impostano un intervallo di un array su un valore particolare:

int array[] = new int[5]; Arrays.fill(array, 0, 3, -50);

Notare che il metodo accetta l'array, l'indice del primo elemento, il numero di elementi e il valore.

5. Utilizzo di Arrays.copyOf ()

Il metodo Arrays.copyOf () crea un nuovo array copiando un altro array. Il metodo ha molti overload che accettano diversi tipi di argomenti.

Vediamo un rapido esempio:

int array[] = { 1, 2, 3, 4, 5 }; int[] copy = Arrays.copyOf(array, 5);

Alcune note qui:

  • Il metodo accetta l'array di origine e la lunghezza della copia da creare
  • Se la lunghezza è maggiore della lunghezza dell'array da copiare, gli elementi aggiuntivi verranno inizializzati utilizzando i loro valori predefiniti
  • Se la matrice di origine non è stata inizializzata, viene generata un'eccezione NullPointerException
  • Se la lunghezza della matrice di origine è negativa, viene generata un'eccezione NegativeArraySizeException

6. Utilizzo di Arrays.setAll ()

Il metodo Arrays.setAll () imposta tutti gli elementi di un array utilizzando una funzione generatore:

int[] array = new int[20]; Arrays.setAll(array, p -> p > 9 ? 0 : p); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Se la funzione del generatore è null, viene generata un'eccezione NullPointerException .

7. Utilizzo di ArrayUtils.clone ()

Infine, utilizziamo l' API ArrayUtils.clone () da Apache Commons Lang 3, che inizializza un array creando una copia diretta di un altro array:

char[] array = new char[] {'a', 'b', 'c'}; char[] copy = ArrayUtils.clone(array);

Si noti che questo metodo è sovraccarico per tutti i tipi primitivi.

8. Conclusione

In questo articolo, abbiamo esplorato diversi modi di inizializzare gli array in Java.

Come sempre, la versione completa del codice è disponibile su GitHub.