Java - Tableaux
Java fournit une structure de données, le array, qui stocke une collection séquentielle de taille fixe d'éléments du même type. Un tableau est utilisé pour stocker une collection de données, mais il est souvent plus utile de considérer un tableau comme une collection de variables du même type.
Au lieu de déclarer des variables individuelles, telles que nombre0, nombre1, ... et nombre99, vous déclarez une variable de tableau telle que des nombres et utilisez les nombres [0], les nombres [1] et ..., les nombres [99] pour représenter variables individuelles.
Ce didacticiel explique comment déclarer des variables de tableau, créer des tableaux et traiter des tableaux à l'aide de variables indexées.
Déclaration des variables de tableau
Pour utiliser un tableau dans un programme, vous devez déclarer une variable pour référencer le tableau et vous devez spécifier le type de tableau auquel la variable peut faire référence. Voici la syntaxe pour déclarer une variable de tableau -
Syntaxe
dataType[] arrayRefVar; // preferred way.
or
dataType arrayRefVar[]; // works but not preferred way.
Note - Le style dataType[] arrayRefVarest préféré. Le styledataType arrayRefVar[] vient du langage C / C ++ et a été adopté en Java pour accueillir les programmeurs C / C ++.
Exemple
Les extraits de code suivants sont des exemples de cette syntaxe -
double[] myList; // preferred way.
or
double myList[]; // works but not preferred way.
Création de tableaux
Vous pouvez créer un tableau en utilisant l'opérateur new avec la syntaxe suivante -
Syntaxe
arrayRefVar = new dataType[arraySize];
La déclaration ci-dessus fait deux choses -
Il crée un tableau en utilisant le nouveau dataType [arraySize].
Il affecte la référence du tableau nouvellement créé à la variable arrayRefVar.
La déclaration d'une variable de tableau, la création d'un tableau et l'affectation de la référence du tableau à la variable peuvent être combinées en une seule instruction, comme indiqué ci-dessous -
dataType[] arrayRefVar = new dataType[arraySize];
Vous pouvez également créer des tableaux comme suit -
dataType[] arrayRefVar = {value0, value1, ..., valuek};
Les éléments du tableau sont accessibles via le index. Les indices de tableau sont basés sur 0; c'est-à-dire qu'ils commencent de 0 àarrayRefVar.length-1.
Exemple
L'instruction suivante déclare une variable tableau, myList, crée un tableau de 10 éléments de type double et assigne sa référence à myList -
double[] myList = new double[10];
L'image suivante représente le tableau myList. Ici, myList contient dix valeurs doubles et les indices vont de 0 à 9.
Traitement des tableaux
Lors du traitement des éléments de tableau, nous utilisons souvent soit for boucle ou foreach boucle car tous les éléments d'un tableau sont du même type et la taille du tableau est connue.
Exemple
Voici un exemple complet montrant comment créer, initialiser et traiter des tableaux -
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);
}
}
Cela produira le résultat suivant -
Production
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
Les boucles foreach
JDK 1.5 a introduit une nouvelle boucle for connue sous le nom de boucle foreach ou boucle for améliorée, qui vous permet de parcourir le tableau complet de manière séquentielle sans utiliser de variable d'index.
Exemple
Le code suivant affiche tous les éléments du tableau 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);
}
}
}
Cela produira le résultat suivant -
Production
1.9
2.9
3.4
3.5
Passer des tableaux aux méthodes
Tout comme vous pouvez transmettre des valeurs de type primitif aux méthodes, vous pouvez également transmettre des tableaux aux méthodes. Par exemple, la méthode suivante affiche les éléments dans unint tableau -
Exemple
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
Vous pouvez l'invoquer en passant un tableau. Par exemple, l'instruction suivante appelle la méthode printArray pour afficher 3, 1, 2, 6, 4 et 2 -
Exemple
printArray(new int[]{3, 1, 2, 6, 4, 2});
Renvoyer un tableau à partir d'une méthode
Une méthode peut également renvoyer un tableau. Par exemple, la méthode suivante renvoie un tableau qui est l'inversion d'un autre tableau -
Exemple
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 contient diverses méthodes statiques pour trier et rechercher des tableaux, comparer des tableaux et remplir des éléments de tableau. Ces méthodes sont surchargées pour tous les types primitifs.
N ° Sr. | Méthode et description |
---|---|
1 | public static int binarySearch(Object[] a, Object key) Recherche la valeur spécifiée dans le tableau Object spécifié (Byte, Int, double, etc.) à l'aide de l'algorithme de recherche binaire. Le tableau doit être trié avant d'effectuer cet appel. Cela renvoie l'index de la clé de recherche, si elle est contenue dans la liste; sinon, il renvoie (- (point d'insertion + 1)). |
2 | public static boolean equals(long[] a, long[] a2) Renvoie true si les deux tableaux de longs spécifiés sont égaux l'un à l'autre. Deux tableaux sont considérés comme égaux si les deux tableaux contiennent le même nombre d'éléments et que toutes les paires d'éléments correspondantes dans les deux tableaux sont égales. Cela renvoie true si les deux tableaux sont égaux. La même méthode peut être utilisée par tous les autres types de données primitifs (Byte, short, Int, etc.) |
3 | public static void fill(int[] a, int val) Attribue la valeur int spécifiée à chaque élément du tableau d'entiers spécifié. La même méthode pourrait être utilisée par tous les autres types de données primitifs (Byte, short, Int, etc.) |
4 | public static void sort(Object[] a) Trie le tableau d'objets spécifié dans un ordre croissant, selon l'ordre naturel de ses éléments. La même méthode pourrait être utilisée par tous les autres types de données primitifs (Byte, short, Int, etc.) |