Maintenant que nous avons travaillé avec les tableaux (arrays), présentons les listes dynamiques (ArrayLists). Les listes dynamiques font partie du Framework de collections Java et offrent une façon plus flexible de travailler avec des listes d'objets. Contrairement aux tableaux, les listes dynamiques peuvent augmenter ou diminuer de taille de manière dynamique.
-
Ouvrez le fichier appelé ArrayListDemo.java
dans votre répertoire de projet.
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// Nous allons ajouter notre code ici
}
}
Notez l'instruction import
en haut. Cela indique à Java que nous souhaitons utiliser la classe ArrayList
dans notre programme.
-
Maintenant, créons une liste dynamique de chaînes de caractères (Strings). Ajoutez cette ligne à l'intérieur de la méthode main
:
ArrayList<String> fruits = new ArrayList<>();
Cela crée une liste dynamique vide qui peut contenir des objets de type String
. La partie <String>
est appelée un "générique" et spécifie le type d'éléments que la liste dynamique contiendra.
-
Ajoutons quelques éléments à notre liste dynamique. Ajoutez ces lignes :
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
La méthode add()
ajoute des éléments à la fin de la liste.
-
Maintenant, affichons notre liste dynamique. Ajoutez ce code :
System.out.println("Fruits in the list:");
for (String fruit : fruits) {
System.out.println(fruit);
}
Cela utilise une boucle for
améliorée pour parcourir la liste dynamique, similairement à ce que nous avons fait avec les tableaux.
Astuce : Vous pouvez compiler et exécuter votre programme à tout moment pour voir la sortie. Ou vous pouvez continuer à ajouter plus de code et l'exécuter tout à la fin.
-
Les listes dynamiques ont de nombreuses méthodes utiles. Essayons-en quelques-unes. Ajoutez ce code :
System.out.println("\nNumber of fruits: " + fruits.size());
System.out.println("The second fruit is: " + fruits.get(1));
size()
renvoie le nombre d'éléments dans la liste dynamique, et get(index)
récupère l'élément à l'indice spécifié.
-
Nous pouvons également remplacer des éléments dans une liste dynamique en utilisant la méthode set()
. Ajoutez ce code :
// Before: [Apple, Banana, Cherry]
fruits.set(1, "Blueberry"); // Replaces "Banana" with "Blueberry"
System.out.println("\nAfter replacing the second fruit:");
System.out.println(fruits); // [Apple, Blueberry, Cherry]
set(index, element)
remplace l'élément à l'indice spécifié par un nouvel élément. La taille de la liste dynamique reste la même.
-
Contrairement aux tableaux, les listes dynamiques nous permettent d'insérer des éléments à n'importe quelle position en utilisant la méthode add(index, element)
. Cela est différent de set()
que nous avons vu précédemment. Voyons comment add()
fonctionne :
// Before: [Apple, Blueberry, Cherry]
fruits.add(1, "Blackberry");
System.out.println("\nAfter inserting Blackberry at index 1:");
System.out.println(fruits);
// After: [Apple, Blackberry, Blueberry, Cherry]
Comprenons ce qui s'est passé :
add(1, "Blackberry")
insère "Blackberry" à l'indice 1
- Les éléments existants à l'indice 1 et suivants (Blueberry, Cherry) sont automatiquement décalés d'une position vers la droite
- La taille de la liste dynamique augmente de 1
- Cela est différent de
set()
qui remplacerait l'élément existant sans décalage ni changement de taille
Pour mieux visualiser la différence :
// Using add(index, element) - inserts and shifts
fruits.add(1, "Blackberry"); // [Apple, Blackberry, Blueberry, Cherry]
// Using set(index, element) - replaces without shifting
fruits.set(1, "Blackberry"); // [Apple, Blackberry, Cherry]
-
Nous pouvons également supprimer des éléments d'une liste dynamique. Ajoutez ce code :
fruits.remove("Cherry");
System.out.println("\nAfter removing Cherry:");
System.out.println(fruits);
Cela supprime la première occurrence de "Cherry" de la liste dynamique. Lorsqu'un élément est supprimé, tous les éléments suivants sont décalés vers la gauche pour combler l'espace laissé vide.
-
Enfin, vérifions si certains éléments sont dans notre liste dynamique :
System.out.println("\nDoes the list contain Apple? " + fruits.contains("Apple"));
System.out.println("Does the list contain Cherry? " + fruits.contains("Cherry"));
La méthode contains()
vérifie si la liste dynamique contient un élément spécifique et renvoie une valeur booléenne.
-
Enregistrez le fichier, puis compilez et exécutez le programme :
javac ~/project/ArrayListDemo.java
java -cp ~/project ArrayListDemo
Vous devriez voir une sortie similaire à ceci :
Fruits in the list:
Apple
Banana
Cherry
Number of fruits: 3
The second fruit is: Banana
After replacing the second fruit:
[Apple, Blueberry, Cherry]
After inserting Blackberry at index 1:
[Apple, Blackberry, Blueberry, Cherry]
After removing Cherry:
[Apple, Blackberry, Blueberry]
Does the list contain Apple? true
Does the list contain Cherry? false
Félicitations! Vous avez maintenant créé une liste dynamique, ajouté et supprimé des éléments, accédé à des éléments par leur indice et utilisé diverses méthodes de liste dynamique. Vous avez appris les différences importantes entre des opérations telles que add()
qui insère et décale des éléments, et set()
qui remplace des éléments. Les listes dynamiques offrent plus de flexibilité que les tableaux, car elles peuvent augmenter et diminuer en taille selon les besoins. Cela les rend très utiles lorsque vous ne savez pas à l'avance combien d'éléments vous allez manipuler.