Accueil > Programmer avec Java > Structures de données >
[]
après le type de données. P. ex. int[] tableau;
pour un tableau d’entiers.tableau[index]
. Si l’index fourni n’est pas valide (négatif ou >= length
), Java génère une erreur ArrayIndexOutOfBoundsException
.length
tableau
, on peut obtenir la longueur avec tableau.length
.Arrays
for
, une boucle while
ou une boucle for-each
. C’est une technique de base pour un grand nombre d’algorithmes comme trouver des valeurs, compter des éléments, ou les trier.boolean
. Dans d’autre cas, l’état peut être une valeur numérique - comme la position dans un tableau - alors un int
peut être plus approprié. Exemple : un drapeau booléen peut indiquer si un élément est trouvé dans un tableau ou non. Dans le même contexte un drapeu numérique peut indiquer l’index de l’élément trouvé ou -1 s’il n’est pas trouvé.À la fin de cette leçon vous devrez être en mesure de :
Crédit : Mustapha Ejjaaouani, 2024
Crédit : Hervice Ngouffo, 2024
Pour traverser un tableau, on utilise une boucle.
Voir les notes sur les boucles pour vous rafraîchir la mémoire.
Dans les exemples ci-dessous, on traverse une boucle simplement pour afficher chaque valeur du tableau.
while
- lire ou modifier les éléments du tableauLa boucle while
peut servir pour n’importe quelle boucle.
1
2
3
4
5
6
7
int[] tableau = {1, 2, 3, 4, 5};
int i = 0;
while (i < tableau.length) {
System.out.println(tableau[i]);
i++;
}
for
- lire ou modifier les éléments du tableauLa boucle for
est particulièrement bien adaptée pour les tableaux car les trois opérations sur l’index du tableau dans la version while
sont regroupées dans la déclaration de la boucle for
.
1
2
3
4
5
int[] tableau = {1, 2, 3, 4, 5};
for (int i = 0; i < tableau.length; i++) {
System.out.println(tableau[i]);
}
for-each
- lire seulementLa boucle for-each
est une version spécialisée de la syntaxe for
conçu spécifiquement pour traverser les collections, y compris les tableaux.
Dans cette boucle, on n’utilise pas les index du tableau - ils sont gérés automatiquement par Java. Plutôt, on utilise une variable temporaire pour chaque élément du tableau. Cette variable doit être du même type que les éléments du tableau.
1
2
3
4
5
int[] tableau = {1, 2, 3, 4, 5};
for (int element : tableau) {
System.out.println(element);
}
La ligne for (int element : tableau)
se lit comme “pour chaque élément de type int
dans le tableau
”.
La classe Arrays
de Java fournit des méthodes pratiques pour manipuler des tableaux.
toString()
Pour afficher les éléments d’un tableau sans écrire un algorithme spécifique, vous pouvez utiliser la commande suivante :
1
Array.toString(tableau);
Comparez la sortie de cette commande avec la commande System.out.println(tableau);
pour voir la différence.
sort()
Pour trier un tableau en ordre croissant, vous pouvez utiliser la commande suivante :
1
Arrays.sort(tableau);
Cette méthode modifie directement les éléments de tableau
ce qu’on appelle un tri en place. Aucun nouveau tableau est généré.
binarySearch()
Pour utiliser une recherche linéaire sur un tableau, on peut simplement le traverser élément-par-élément, comme ceci :
1
2
3
4
5
6
7
8
int recherche = 3;
boolean found = false;
for (int i = 0; i < tableau.length; i++) {
if (tableau[i] == recherche) {
found = true;
break;
}
}
S’il n’y a jamais d’égalité entre la valeur cherchée et un élément du tableau, found
restera false
. Sinon, on change found
à true
et on sort de la boucle.
La plupart des méthodes de recherche retourne un index valide si l’élément est trouvé, ou un index négatif si l’élément n’est pas trouvé. L’algorithme pour ça est identique à l’algorithme précédent, mais on remplace le drapeau booléen avec un drapeau numérique :
1
2
3
4
5
6
7
8
int recherche = 3;
int found = -1;
for (int i = 0; i < tableau.length; i++) {
if (tableau[i] == recherche) {
found = i;
break;
}
}
Par contre, si on a beaucoup d’éléments à chercher, une méthode plus efficace est la recherche binaire. Il y a une précondition, par contre : pour utiliser la recherche binaire, le tableau doit être trié.
Voici comment on peut utiliser la recherche binaire avec Arrays
:
1
2
3
int recherche = 3;
Arrays.sort(tableau);
int index = Arrays.binarySearch(tableau, recherche);
Pour plus de détails sur les algorithmes de recherche et l’efficacité algorithmique, voir le cours ICS4U!
Crédit : Hervice Ngouffo, 2024
Quiz de vérification sur les tableaux et leurs index
Vous rendre sur le site codingbat.com et vous créer un compte avec votre courriel écolecatholique.ca. Ajouter mon courriel dans la section Teacher Share afin de me montrer vos progrès.
length
).continue
et break
).La section “Array-3” est plus avancée (matrices / tableaux de tableaux) et peut être considérée comme un défi pour ce cours.