Lavorare con array in Java

Se un programma deve funzionare con un numero di valori dello stesso tipo di dati, è possibile dichiarare una variabile per ciascun numero. Ad esempio, un programma che visualizza i numeri della lotteria:

int lotteryNumber1 = 16;
int lotteryNumber2 = 32;
int lotteryNumber3 = 12;
int lotteryNumber4 = 23;
int lotteryNumber5 = 33;
int lotteryNumber6 = 20;

Un modo più elegante di gestire i valori che possono essere raggruppati è utilizzare un array. Un array è un contenitore che contiene un numero fisso di valori di un tipo di dati. Nell'esempio sopra, i numeri della lotteria potrebbero essere raggruppati in un array int:

int [] lotteryNumbers = 16,32,12,23,33,20; 

Pensa a un array come a una fila di scatole. Il numero di caselle nell'array non può cambiare. Ciascuna casella può contenere un valore purché sia ​​dello stesso tipo di dati dei valori contenuti nelle altre caselle. Puoi guardare dentro una scatola per vedere quale valore contiene o sostituire il contenuto della scatola con un altro valore. Quando si parla di array, le caselle sono chiamate elementi.

Dichiarazione e inizializzazione di una matrice

La dichiarazione di dichiarazione per un array è simile a quella utilizzata per dichiarare qualsiasi altra variabile. Contiene il tipo di dati seguito dal nome dell'array: l'unica differenza è l'inclusione di parentesi quadre accanto al tipo di dati:

int [] intArray;
float [] floatArray; 
char [] charArray;

Le dichiarazioni di dichiarazione sopra lo dicono al compilatore

intArray
la variabile è una matrice di
int
,
floatArray
è una matrice di
galleggianti
e
charArray
è una matrice di caratteri. Come qualsiasi variabile, non possono essere utilizzati fino a quando non è stato inizializzato assegnandogli un valore. Per un array l'assegnazione di un valore a un array deve definire la dimensione di un array:
intArray = new int [10]; 

Il numero tra parentesi definisce il numero di elementi contenuti nell'array. La precedente istruzione di assegnazione crea un array int con dieci elementi. Ovviamente, non c'è motivo per cui la dichiarazione e l'assegnazione non possano avvenire in una sola dichiarazione:

float [] floatArray = new float [10]; 

Le matrici non si limitano ai tipi di dati primitivi. Le matrici di oggetti possono essere create:

String [] names = new String [5]; 

Utilizzando una matrice

Una volta inizializzato un array, agli elementi possono essere assegnati valori utilizzando l'indice dell'array. L'indice definisce la posizione di ciascun elemento nella matrice. Il primo elemento è a 0, il secondo elemento a 1 e così via. È importante notare che l'indice del primo elemento è 0. È facile pensare che, poiché un array ha dieci elementi, l'indice è compreso tra 1 e 10 anziché tra 0 e 9. Ad esempio, se torniamo alla lotteria esempio numeri possiamo creare un array contenente 6 elementi e assegnare i numeri della lotteria agli elementi:

int [] lotteryNumbers = new int [6];
lotteryNumbers [0] = 16;
lotteryNumbers [1] = 32;
lotteryNumbers [2] = 12;
lotteryNumbers [3] = 23;
lotteryNumbers [4] = 33;
lotteryNumbers [5] = 20;

Esiste una scorciatoia per riempire gli elementi in un array inserendo i valori per gli elementi nell'istruzione dichiarazione:

int [] lotteryNumbers = 16,32,12,23,33,20;
String [] names = "John", "James", "Julian", "Jack", "Jonathon";

I valori per ciascun elemento sono inseriti in una coppia di parentesi graffe. L'ordine dei valori determina a quale elemento è assegnato il valore che inizia con la posizione di indice 0. Il numero di elementi nell'array è determinato dal numero di valori all'interno delle parentesi graffe.

Per ottenere il valore di un elemento viene utilizzato il suo indice:

System.out.println ("Il valore del primo elemento è" + lotteryNumbers [0]); 

Per scoprire quanti elementi un array ha utilizzato il campo lunghezza:

System.out.println ("L'array lotteryNumbers ha" + lotteryNumbers.length + "elements"); 

Nota: Un errore comune quando si utilizza il metodo di lunghezza è dimenticare di utilizzare il valore di lunghezza come posizione di indice. Ciò comporterà sempre un errore poiché le posizioni dell'indice di un array sono da 0 a lunghezza - 1.

Matrici multidimensionali

Gli array che abbiamo esaminato finora sono noti come array monodimensionali (o monodimensionali). Ciò significa che hanno solo una fila di elementi. Tuttavia, le matrici possono avere più di una dimensione. Un multidimensionale è in realtà un array che contiene array:

int [] [] lotteryNumbers = 16,32,12,23,33,20, 34,40,3,11,33,24; 

L'indice per un array multidimensionale è composto da due numeri:

System.out.println ("Il valore dell'elemento 1,4 è" + lotteryNumbers [1] [4]); 

Sebbene la lunghezza delle matrici contenute in una matrice multidimensionale non debba avere la stessa lunghezza:

String [] [] names = new String [5] [7]; 

Copia di un array

Per copiare un array il modo più semplice è usare il

arraycopy
metodo della classe System. Il
arraycopy
Il metodo può essere utilizzato per copiare tutti gli elementi di un array o una loro sottosezione. Ci sono cinque parametri passati al
 arraycopy
metodo: l'array originale, la posizione dell'indice da cui iniziare a copiare un elemento, il nuovo array, la posizione dell'indice da cui iniziare l'inserimento, il numero di elementi da copiare:
pubblico statico vuoto arraycopy (Object src, int srcPos, Object dest, int destPos, int length) 

Ad esempio, per creare un nuovo array contenente gli ultimi quattro elementi di un

int 
Vettore:
int [] lotteryNumbers = 16,32,12,23,33,20;
int [] newArrayNumbers = new int [4];
System.arraycopy (lotteryNumbers, 2, newArrayNumbers, 0, 4);

Poiché le matrici hanno una lunghezza fissa, il file

arraycopy
Il metodo può essere un modo utile per modificare le dimensioni di un array.

Per approfondire le tue conoscenze sugli array, puoi imparare a manipolare gli array usando la classe Arrays e a creare array dinamici (cioè array quando il numero di elementi non è un numero fisso) usando la classe ArrayList.