1. Introduction
C’est la première leçon d’un niveau bonus. Nous sommes déjà tout près d’aborder la POO. Et je veux attiser votre intérêt et prendre un peu d’avance 😈. Dans ce niveau, je vais vous parler de 5 choses intéressantes :
- ♾️ Vous apprendrez à créer des tableaux « infinis »
- 📖 Puis à tenir un « dictionnaire personnel »
- 💾 Ensuite, je vous initierai un peu à la manipulation de fichiers
- 🌐 Puis nous apprendrons à télécharger des images depuis Internet
- 🛰️ Et dans la dernière leçon du niveau, vous suivrez en temps réel la station spatiale ISS
Comment tout cela fonctionne « sous le capot », vous l’apprendrez dans de futurs niveaux, et aujourd’hui vous allez simplement apprendre à utiliser les outils que je vous fournis. Intrigué ? Alors commençons 😇.
Rappel : les tableaux classiques
Rappelons un tableau classique en Java :
int[] arr = new int[10];
C’est très utile, mais il présente quelques limites : la taille est fixe, on ne peut pas ajouter ni retirer d’élément sans créer un nouveau tableau. Or, il arrive que l’on veuille un tableau qui grandisse et rétrécisse selon les besoins. Et nous avons une excellente solution — le tableau dynamique ArrayList !
ArrayList est un « tableau intelligent » qui peut grandir et rétrécir automatiquement. Contrairement à un tableau classique, où la taille est fixe, ArrayList s’occupe lui‑même de disposer de suffisamment de place pour les nouveaux éléments.
Créons un tableau « infini »
Pour créer notre ArrayList, écrivez un code du type :
ArrayList<String> array = new ArrayList<String>()
Ensuite, on peut y ajouter des éléments :
array.add("Alice");
array.add("Kate");
Créer un tableau dynamique pour les nombres entiers
Comme vous l’avez peut-être deviné, le type des éléments de notre tableau dynamique doit être indiqué entre chevrons. On peut y mettre n’importe quel type, sauf les types primitifs. Il faut remplacer les types primitifs par leurs types enveloppe.
Exemple :
ArrayList<Integer> numbers = new ArrayList<Integer>(); // int
ArrayList<Double> fees = new ArrayList<Double>(); // double
ArrayList<Boolean> yesList = new ArrayList<Boolean>(); // boolean
ArrayList<Character> chars = new ArrayList<Character>(); // char
Notre ArrayList ne prend pas en charge [index] pour accéder aux éléments, mais il possède des méthodes spécifiques qui couvrent tous vos besoins. Parcourons les plus intéressantes.
2. Méthode add(element) — ajout d’un élément
La première chose que l’on fait avec une liste, c’est y ajouter des données. Pour cela, on utilise la méthode add. Elle place l’élément à la fin de la liste.
ArrayList<String> todo = new ArrayList<>(); // liste des tâches
todo.add("Apprendre ArrayList");
todo.add("Préparer du thé");
todo.add("Se promener");
Après ces trois lignes, nous avons une liste de trois chaînes. Contrairement à un tableau, nous n’avons pas besoin d’indiquer la taille à l’avance — elle grandit toute seule au fur et à mesure des ajouts.
Très pratique : on peut commencer avec une liste vide et la remplir progressivement en fonction des actions de l’utilisateur ou des données d’entrée du programme.
3. Méthode get(index) — accès par indice
Chaque élément de la liste a son numéro d’ordre — l’indice. L’indexation commence toujours à zéro. Autrement dit, le premier élément a le numéro 0, le deuxième le numéro 1, et ainsi de suite.
Si nous voulons obtenir un élément par son numéro, nous utilisons la méthode get.
String task = todo.get(1);
System.out.println("Deuxième tâche : " + task);
Sortie :
Deuxième tâche : Préparer du thé
Point important à retenir : si vous accédez à un indice qui n’existe pas (par exemple, todo.get(10) pour une liste de trois éléments), le programme lèvera une erreur IndexOutOfBoundsException. Il faut donc toujours soit être sûr de l’indice, soit vérifier la taille de la liste avec size().
4. Méthode set(index, element) — remplacement d’un élément
Il arrive qu’il faille remplacer un élément dans la liste. Dans ce cas, nul besoin de le supprimer puis de le rajouter — il suffit d’utiliser la méthode set.
todo.set(1, "Préparer du café");
System.out.println("Désormais, la deuxième tâche : " + todo.get(1));
Sortie :
Désormais, la deuxième tâche : Préparer du café
Ainsi, set est un moyen de mettre à jour la liste « à la volée ».
5. Méthode remove(index) — suppression d’un élément
On peut supprimer un élément d’un ArrayList par son indice.
todo.remove(0);
System.out.println("La première tâche maintenant : " + todo.get(0));
Sortie :
La première tâche maintenant : Préparer du café
Nous avons supprimé le premier élément (indice 0). Le deuxième est devenu le premier, et le troisième est devenu le deuxième. Point important : après une suppression, les éléments de la liste se décalent.
Cela peut parfois surprendre les débutants. Gardez toujours à l’esprit qu’après une suppression les indices sont recalculés.
6. Méthode size() — connaître la taille de la liste
La méthode size renvoie le nombre d’éléments de la liste. C’est similaire à la propriété length des tableaux, mais pour ArrayList c’est une méthode.
System.out.println("Nombre total de tâches : " + todo.size());
Sortie :
Nombre total de tâches : 2
On utilise souvent size dans les boucles pour parcourir tous les éléments :
for (int i = 0; i < todo.size(); i++)
{
System.out.println(todo.get(i));
}
7. Méthode contains(element) — vérification de présence
Pour savoir si la liste contient un élément donné, on peut utiliser contains. Cette méthode renvoie true ou false.
System.out.println(todo.contains("Se promener"));
System.out.println(todo.contains("Préparer du thé"));
Sortie :
true
false
Méthode très utile lorsque vous voulez éviter les doublons ou vérifier la condition « cet élément est‑il dans la liste ? ».
8. Itération sur les éléments
Il existe deux façons de parcourir une liste.
Boucle par indice
Cette approche est utile si le numéro de l’élément vous importe.
for (int i = 0; i < todo.size(); i++)
{
System.out.println(i + ": " + todo.get(i));
}
Boucle for-each
Si le numéro ne vous importe pas et que vous voulez simplement voir tous les éléments — utilisez la boucle for-each.
for (String task : todo)
{
System.out.println("Tâche : " + task);
}
Cette boucle est plus courte et plus lisible.
9. Pratique : ArrayList dans votre application
Faisons une liste de tâches que l’on peut enrichir et afficher :
import java.util.ArrayList;
import java.util.Scanner;
public class TodoApp
{
public static void main(String[] args)
{
ArrayList<String> todo = new ArrayList<>();
Scanner console = new Scanner(System.in);
while (true)
{
System.out.print("Saisissez une tâche (ou une ligne vide pour quitter) : ");
String task = console.nextLine();
if (task.isEmpty()) break;
todo.add(task);
}
System.out.println("Votre liste de tâches :");
for (int i = 0; i < todo.size(); i++)
{
System.out.println((i + 1) + ". " + todo.get(i));
}
}
}
J’espère que notre tableau « infini » vous a plu. C’est la première des collections Java avec laquelle vous avez fait connaissance. Je pense que les autres vous plairont aussi.
GO TO FULL VERSION