Java - Array
Java fornisce una struttura dati, il array, che memorizza una raccolta sequenziale di dimensioni fisse di elementi dello stesso tipo. Un array viene utilizzato per memorizzare una raccolta di dati, ma spesso è più utile pensare a un array come una raccolta di variabili dello stesso tipo.
Invece di dichiarare variabili individuali, come numero0, numero1, ... e numero99, dichiari una variabile di matrice come numeri e utilizzi numeri [0], numeri [1] e ..., numeri [99] per rappresentare variabili individuali.
Questo tutorial introduce come dichiarare variabili di array, creare array ed elaborare array utilizzando variabili indicizzate.
Dichiarazione delle variabili di matrice
Per utilizzare un array in un programma, è necessario dichiarare una variabile per fare riferimento all'array e specificare il tipo di array a cui la variabile può fare riferimento. Ecco la sintassi per dichiarare una variabile di matrice:
Sintassi
dataType[] arrayRefVar; // preferred way.
or
dataType arrayRefVar[]; // works but not preferred way.
Note - Lo stile dataType[] arrayRefVarè preferito. Lo stiledataType arrayRefVar[] proviene dal linguaggio C / C ++ ed è stato adottato in Java per accogliere i programmatori C / C ++.
Esempio
I seguenti frammenti di codice sono esempi di questa sintassi:
double[] myList; // preferred way.
or
double myList[]; // works but not preferred way.
Creazione di array
È possibile creare un array utilizzando l'operatore new con la seguente sintassi:
Sintassi
arrayRefVar = new dataType[arraySize];
L'affermazione precedente fa due cose:
Crea un array utilizzando il nuovo dataType [arraySize].
Assegna il riferimento dell'array appena creato alla variabile arrayRefVar.
La dichiarazione di una variabile di matrice, la creazione di una matrice e l'assegnazione del riferimento della matrice alla variabile possono essere combinate in un'unica istruzione, come mostrato di seguito:
dataType[] arrayRefVar = new dataType[arraySize];
In alternativa puoi creare array come segue:
dataType[] arrayRefVar = {value0, value1, ..., valuek};
Gli elementi dell'array sono accessibili tramite index. Gli indici di matrice sono a base 0; cioè, iniziano da 0 aarrayRefVar.length-1.
Esempio
La seguente istruzione dichiara una variabile array, myList, crea un array di 10 elementi di tipo double e assegna il suo riferimento a myList -
double[] myList = new double[10];
L'immagine seguente rappresenta la matrice myList. Qui, myList contiene dieci valori doppi e gli indici vanno da 0 a 9.
Elaborazione di array
Quando elaboriamo gli elementi dell'array, spesso usiamo entrambi for loop o foreach perché tutti gli elementi in un array sono dello stesso tipo e la dimensione dell'array è nota.
Esempio
Ecco un esempio completo che mostra come creare, inizializzare ed elaborare array:
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// Print all the array elements
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// Summing all elements
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// Finding the largest element
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
}
}
Questo produrrà il seguente risultato:
Produzione
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
I loop foreach
JDK 1.5 ha introdotto un nuovo ciclo for noto come ciclo foreach o ciclo for migliorato, che consente di attraversare l'array completo in modo sequenziale senza utilizzare una variabile di indice.
Esempio
Il codice seguente mostra tutti gli elementi nell'array myList -
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// Print all the array elements
for (double element: myList) {
System.out.println(element);
}
}
}
Questo produrrà il seguente risultato:
Produzione
1.9
2.9
3.4
3.5
Passaggio di array a metodi
Proprio come puoi passare valori di tipo primitivo ai metodi, puoi anche passare array ai metodi. Ad esempio, il metodo seguente visualizza gli elementi in un fileint matrice -
Esempio
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
Puoi invocarlo passando un array. Ad esempio, la seguente istruzione richiama il metodo printArray per visualizzare 3, 1, 2, 6, 4 e 2 -
Esempio
printArray(new int[]{3, 1, 2, 6, 4, 2});
Restituzione di un array da un metodo
Un metodo può anche restituire un array. Ad esempio, il metodo seguente restituisce un array che è l'inversione di un altro array:
Esempio
public static int[] reverse(int[] list) {
int[] result = new int[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}
La classe Arrays
La classe java.util.Arrays contiene vari metodi statici per ordinare e cercare array, confrontare array e riempire gli elementi dell'array. Questi metodi sono sovraccaricati per tutti i tipi primitivi.
Sr.No. | Metodo e descrizione |
---|---|
1 | public static int binarySearch(Object[] a, Object key) Cerca nella matrice specificata di Object (Byte, Int, double e così via) il valore specificato utilizzando l'algoritmo di ricerca binaria. L'array deve essere ordinato prima di effettuare questa chiamata. Restituisce l'indice della chiave di ricerca, se è contenuta nell'elenco; in caso contrario, restituisce (- (punto di inserimento + 1)). |
2 | public static boolean equals(long[] a, long[] a2) Restituisce vero se i due array di long specificati sono uguali tra loro. Due array sono considerati uguali se entrambi gli array contengono lo stesso numero di elementi e tutte le coppie di elementi corrispondenti nei due array sono uguali. Restituisce true se i due array sono uguali. Lo stesso metodo potrebbe essere utilizzato da tutti gli altri tipi di dati primitivi (Byte, short, Int, ecc.) |
3 | public static void fill(int[] a, int val) Assegna il valore int specificato a ogni elemento dell'array di int specificato. Lo stesso metodo potrebbe essere utilizzato da tutti gli altri tipi di dati primitivi (Byte, short, Int, ecc.) |
4 | public static void sort(Object[] a) Ordina la matrice di oggetti specificata in ordine crescente, in base all'ordinamento naturale dei suoi elementi. Lo stesso metodo potrebbe essere utilizzato da tutti gli altri tipi di dati primitivi (Byte, short, Int, ecc.) |