Maîtriser l'Interface Queue de Java : Méthodes, Implémentations et Utilisation Pratique
Maîtriser l'Interface Queue de Java
Découvrez comment l'interface Queue de Java alimente les structures de données FIFO, ses méthodes principales et les classes d'implémentation les plus courantes.
Classes Implémentant Queue
Puisque Queue est une interface, vous travaillerez avec des classes concrètes qui fournissent la fonctionnalité réelle. Les trois implémentations les plus utilisées sont :
ArrayDeque– une file double-extensible redimensionnable avec des opérations d'ajout/suppression rapides.LinkedList– une liste doublement chaînée supportant les opérations de file et de deque.PriorityQueue– une file basée sur une pile (heap) qui ordonne les éléments par ordre naturel ou un comparateur fourni.
Sous-interfaces Étendant Queue
L'interface Queue est étendue par plusieurs sous-interfaces qui ajoutent des capacités de blocage ou double-entrée :
Deque– ajoute les opérations push/pop aux deux extrémités.BlockingQueue– introduit l'enfilement/défilement thread-safe avec timeouts optionnels.BlockingDeque– combine le blocage avec la sémantique double-entrée.
Structure de Données Queue en Action
Les files fonctionnent sur le principe First-In, First-Out (FIFO) (premier entré, premier sorti) : les éléments sont ajoutés à l'arrière et retirés de l'avant.
Comment Utiliser Queue en Java
Importez l'interface avec java.util.Queue et instanciez-la via une classe concrète :
import java.util.Queue;
import java.util.LinkedList;
import java.util.ArrayDeque;
import java.util.PriorityQueue;
Queue<String> animal1 = new LinkedList<>();
Queue<String> animal2 = new ArrayDeque<>();
Queue<String> animal3 = new PriorityQueue<>();
Chaque objet hérite de l'ensemble complet des méthodes Queue et de l'API générique Collection.
Méthodes Principales de Queue
L'interface étend Collection, donc elle inclut toutes ses méthodes. Les opérations les plus fréquemment utilisées spécifiques aux files sont :
- add(E e) – insère l'élément ; lève une exception en cas d'échec.
- offer(E e) – insère l'élément ; retourne
falseen cas d'échec sans lever d'exception. - element() – récupère, sans supprimer, la tête ; lève une exception si vide.
- peek() – récupère, sans supprimer, la tête ; retourne
nullsi vide. - remove() – supprime et retourne la tête ; lève une exception si vide.
- poll() – supprime et retourne la tête ; retourne
nullsi vide.
Exemple d'Implémentation LinkedList
import java.util.Queue;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
Queue<Integer> numbers = new LinkedList<>();
numbers.offer(1);
numbers.offer(2);
numbers.offer(3);
System.out.println("Queue: " + numbers);
int accessed = numbers.peek();
System.out.println("Élément Accédé: " + accessed);
int removed = numbers.poll();
System.out.println("Élément Supprimé: " + removed);
System.out.println("Queue Mise à Jour: " + numbers);
}
}
Sortie
Queue: [1, 2, 3] Élément Accédé: 1 Élément Supprimé: 1 Queue Mise à Jour: [2, 3]
Pour plus de détails, voir Java LinkedList.
Exemple d'Implémentation PriorityQueue
import java.util.Queue;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) {
Queue<Integer> numbers = new PriorityQueue<>();
numbers.offer(5);
numbers.offer(1);
numbers.offer(2);
System.out.println("Queue: " + numbers);
int accessed = numbers.peek();
System.out.println("Élément Accédé: " + accessed);
int removed = numbers.poll();
System.out.println("Élément Supprimé: " + removed);
System.out.println("Queue Mise à Jour: " + numbers);
}
}
Sortie
Queue: [1, 5, 2] Élément Accédé: 1 Élément Supprimé: 1 Queue Mise à Jour: [2, 5]
Pour plus de détails, voir Java PriorityQueue.
Restez à l'écoute pour nos prochains tutoriels qui exploreront les sous-interfaces de Queue – Deque, BlockingQueue et BlockingDeque – et comment les utiliser dans des scénarios réels.
Java
- Maîtriser les interfaces C# : Définition, implémentation et cas d'utilisation pratiques
- Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
- Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
- Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
- Annotations Java expliquées : types, placement et exemples pratiques
- Maîtriser l'interface NavigableSet de Java : Navigation, tri et exemples pratiques
- Maîtriser les expressions lambda Java : Des bases à l'API Stream
- Comprendre les interfaces Java : Définitions, Usages et Bonnes pratiques
- Java 9 : Méthodes privées dans les interfaces — Encapsulation et réutilisation