En Java, les tableaux permettent de stocker plusieurs valeurs du même type dans une seule structure. Contrairement à d'autres structures de données, un tableau a une taille fixe une fois créé. On peut affecter des éléments à un tableau ou les récupérer à l'aide d'un indice. Les tableaux Java utilisent une indexation à partir de zéro : l'indice du premier élément est 0, celui du deuxième élément est 1, etc.
Voici la syntaxe standard pour initialiser un tableau :
type[] variableName = new type[size];
Le type est le type des éléments du tableau, qui peut être un type primitif (par exemple int) ou une classe (par exemple String).
La size est le nombre d'éléments que ce tableau contiendra (ce nombre ne pourra pas être modifié par la suite).
Après la création du tableau, les éléments sont initialisés à leurs valeurs par défaut (généralement 0, false ou null).
// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];
On peut aussi définir un tableau à l'aide d'une notation abrégée qui permet à la fois de créer le tableau et de définir ses valeurs :
// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };
Comme le compilateur peut désormais déterminer le nombre d'éléments que contiendra le tableau, la longueur peut être omise.
On peut affecter et accéder aux éléments d'un tableau à l'aide d'une notation à crochets avec indice :
// Assign second element by index
twoInts[1] = 8;
// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];
Accéder à un indice en dehors des indices valides du tableau provoque une IndexOutOfBoundsException.
On peut manipuler un tableau en appelant les méthodes ou les propriétés de l'instance du tableau, ou en utilisant les méthodes statiques définies dans la classe Arrays (généralement utilisées uniquement dans du code générique).
La propriété length contient la longueur d'un tableau.
On peut y accéder comme ceci :
int arrayLength = someArray.length;
Java fournit également une classe utilitaire pratique java.util.Arrays qui propose de nombreuses méthodes utiles liées aux tableaux (par exemple Arrays.equals).
Java prend également en charge les tableaux multidimensionnels comme int[][] arr = new int[3][4];, ce qui peut être très utile.
Le fait qu'un tableau soit aussi une collection signifie qu'en plus d'accéder aux valeurs par indice, on peut parcourir toutes ses valeurs à l'aide d'une boucle for-each :
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for(char vowel: vowels) {
// Output the vowel
System.out.print(vowel);
}
// => aeiou
Si tu veux plus de contrôle sur les valeurs à parcourir, tu peux utiliser une boucle for :
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for (int i = 0; i < 3; i++) {
// Output the vowel
System.out.print(vowels[i]);
}
// => aei
Tu es un observateur d'oiseaux passionné et tu notes combien d'oiseaux sont venus dans ton jardin au cours des sept derniers jours.
Tu as six tâches, qui portent toutes sur le nombre d'oiseaux venus dans ton jardin.
Pour pouvoir comparer, tu gardes toujours près de toi une copie des comptages de la semaine dernière, à savoir : 0, 2, 5, 3, 7, 8 et 4. Implémente la méthode BirdWatcher.getLastWeek() qui renvoie les comptages de la semaine dernière :
BirdWatcher.getLastWeek();
// => [0, 2, 5, 3, 7, 8, 4]
Implémente la méthode BirdWatcher.getToday() pour renvoyer le nombre d'oiseaux qui sont venus dans ton jardin aujourd'hui. Les comptages d'oiseaux sont ordonnés par jour : le premier élément correspond au comptage du jour le plus ancien et le dernier au comptage d'aujourd'hui.
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getToday();
// => 1
Implémente la méthode BirdWatcher.incrementTodaysCount() pour incrémenter le comptage d'aujourd'hui :
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.incrementTodaysCount();
birdCount.getToday();
// => 2
Implémente la méthode BirdWatcher.hasDayWithoutBirds() qui renvoie true si un jour aucun oiseau n'est venu dans le jardin, et false dans le cas contraire :
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.hasDayWithoutBirds();
// => true
Implémente la méthode BirdWatcher.getCountForFirstDays() qui renvoie le nombre d'oiseaux venus dans ton jardin depuis le début de la semaine, en limitant le comptage au nombre de jours indiqué depuis le début de la semaine.
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getCountForFirstDays(4);
// => 14
Certains jours sont plus chargés que d'autres. Un jour chargé est un jour où cinq oiseaux ou plus sont venus dans ton jardin.
Implémente la méthode BirdWatcher.getBusyDays() pour renvoyer le nombre de jours chargés :
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getBusyDays();
// => 2
Inscris-toi sur Exercism pour apprendre et maîtriser Java avec 26 concepts158 exercices, et un vrai mentorat humain, le tout gratuitement.