Comment fusionner deux listes en Java : 5 méthodes efficaces avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi fusionner des listes en Java et comment ne pas se perdre



Imaginez : vous avez deux listes de tâches — « urgentes » et « importantes ». Ou deux listes de clients — de la base du mois dernier et de celle du mois en cours. Pour travailler avec elles comme un seul ensemble, vous devez les fusionner. En Java, cette tâche est si courante que la question « How do I join two lists in Java? » sur Stack Overflow recueille des milliers de vues. Et ce n'est pas un hasard : chez les débutants, la fusion de listes prête souvent à confusion — tantôt une erreur de compilation, tantôt la liste s'avère immuable, tantôt des données sont perdues.



Dans cet article, nous allons passer en revue 5 méthodes éprouvées pour fusionner deux listes en Java — du classique addAll à l'élégant Stream API. Vous découvrirez quelle méthode choisir pour différentes situations, comment éviter les pièges et écrire un code rapide et prévisible. C'est parti !



Méthode 1 : Le classique addAll — simple et fiable



Le chemin le plus direct est d'utiliser la méthode addAll() de l'interface Collection. Elle ajoute tous les éléments d'une collection à une autre. Cela semble idéal, mais il y a un détail : elle modifie la liste d'origine. Si vous devez conserver les listes originales intactes, créez-en une nouvelle.



Exemple : fusion avec conservation des originales



import java.util.ArrayList;import java.util.List;

public class JoinListsExample { public static void main(String[] args) { List<String> listA = new ArrayList<>(List.of("Java", "Python", "C++")); List<String> listB = new ArrayList<>(List.of("JavaScript", "Go", "Rust"));

// Créer une nouvelle liste et y ajouter les deux listes List<String> mergedList = new ArrayList<>(listA); mergedList.addAll(listB);

System.out.println(mergedList); // [Java, Python, C++, JavaScript, Go, Rust] // Les listes originales n'ont pas été modifiées }}


Avantages : intuitif, fonctionne avec tous les types de List, ne nécessite pas Java 8+.

Inconvénients : modifie la liste d'origine si vous n'en créez pas une nouvelle ; ne prend pas en charge l'évaluation paresseuse.



Méthode 2 : Stream API — moderne et flexible



Si vous utilisez Java 8 ou une version ultérieure, Stream API offre une manière élégante de fusionner des listes. Elle ne modifie pas les données d'origine et se combine facilement avec d'autres opérations — filtrage, tri, transformation.



Fusion de base avec Stream.concat



import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;

public class StreamJoinExample { public static void main(String[] args) { List<String> listA = List.of("Rouge", "Vert", "Bleu"); List<String> listB = List.of("Jaune", "Violet");

List<String> mergedList = Stream.concat(listA.stream(), listB.stream()) .collect(Collectors.toList());

System.out.println(mergedList); // [Rouge, Vert, Bleu, Jaune, Violet] }}


Fusion avec filtrage et tri



Supposons que vous deviez fusionner deux listes de nombres, ne garder que les pairs et les trier par ordre décroissant :



import java.util.List;import java.util.Comparator;import java.util.stream.Collectors;import java.util.stream.Stream;

public class StreamAdvancedJoin { public static void main(String[] args) { List<Integer> listA = List.of(5, 2, 8, 1); List<Integer> listB = List.of(7, 4, 9, 3);

List<Integer> result = Stream.concat(listA.stream(), listB.stream()) .filter(n -> n % 2 == 0) // uniquement les pairs .sorted(Comparator.reverseOrder()) .collect(C

Blogs

Book Recommendations