Enqueue et Dequeue en Java
Avant d’entrer dans les concepts de enqueue
et dequeue
en Java, développons une compréhension de base de l’ensemble du concept de file d’attente. Qu’est-ce que c’est en fait ? L’exemple du monde réel et bien plus encore. Plongeons-nous.
File d’attente
La file d’attente en termes de programmation est une structure linéaire avec un ordre unidirectionnel à travers lequel ce type de données s’exécute. L’ordre à sens unique est FIFO (first in, first out). Un exemple concret serait la file de personnes (file d’attente) que vous voyez à l’extérieur d’une banque. Celui qui entre en premier est servi en premier et sort. Ainsi, lorsque nous disons enqueue
et dequeue
en programmation, nous entendons respectivement ajouter et supprimer un élément. Jetez un oeil à l’image ci-dessous.
Comme vous pouvez le voir, l’ajout (enqueue
) dans la file d’attente se fera toujours à l’arrière et la suppression (dequeue
) se fera toujours à l’avant. Maintenant que vous avez une compréhension concrète de la file d’attente, examinons l’implémentation de la file d’attente en Java.
File d’attente en Java
En Java, la file d’attente est considérée comme une interface implémentée par une liste chaînée. L’exemple de code suivant montre comment créer l’objet de la file d’attente en Java.
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
}
}
Vous devez ajouter les classes de listes chaînées et de files d’attente pour en implémenter une en Java. (Voir en haut du code). Lors de la mise en œuvre de la file d’attente, nous utilisons la LinkedList à cette fin. Comprenons maintenant les méthodes impliquées dans l’ajout et la suppression d’un élément de la file d’attente.
Mettre en file d’attente et retirer la file d’attente en Java
Comme mentionné ci-dessus, l’ordre pour ces types d’opérations est FIFO. Alors, ajoutons (enqueue
) une valeur dans la file d’attente que nous avons créée. Comme la file d’attente est une chaîne, les valeurs suivantes suffiraient.
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
// Adding In Queue using `add()` method
queue.add("Bill Gates"); // enque
queue.add("Mark Mark Zuckerberg"); // enque
queue.add("Elon Musk"); // enquue
queue.add("Jeff Bezos");
queue.offer("Donald Trump"); // alternatice enque
System.out.println("Queue : " + queue); // queue print
}
}
Dans l’exemple ci-dessus, nous avons ajouté quatre valeurs en utilisant les deux méthodes suivantes.
queue.add()
Comme vous pouvez le voir dans le code, nous avons ajouté quatre valeurs de chaîne dans la file d’attente. Une autre chose que vous devez savoir sur cette méthode est qu’elle lève une exception non vérifiée. Par exemple, si votre file d’attente est restreinte, la méthode add()
renverra une exception lors de l’ajout d’un autre élément alors qu’il n’y a pas de place pour cela. Tout dépend de la nature de la file d’attente. En savoir plus sur les files d’attente en java ici.
queue.offer()
La méthode offer()
est une alternative à add()
. Cette méthode particulière ne lève pas d’exceptions. Au lieu de cela, il donne des valeurs vraies et fausses. Nous avons ajouté le cinquième élément dans la file d’attente en utilisant offer()
dans l’exemple ci-dessus. La sortie du programme ci-dessus sera la suivante.
Queue : [ Bill Gates, Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump ]
Maintenant que vous avez compris comment vous pouvez (enqueue
) ajouter des éléments dans la file d’attente. Voyons comment vous pouvez supprimer un élément de la file d’attente.
queue.remove()
La méthode remove()
permet de supprimer un élément de la file d’attente. Il sera opéré tout au début de la file d’attente. Par exemple, si nous devions supprimer un élément de la file d’attente ci-dessus, le premier élément à supprimer serait Bill Gates
. Jetez un oeil au code suivant.
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
// Adding In Queue using `add()` method
queue.add("Bill Gates"); // enque
queue.add("Mark Mark Zuckerberg"); // enque
queue.add("Elon Musk"); // enquue
queue.add("Jeff Bezos");
queue.offer("Donald Trump"); // alternatice enque
System.out.println("Queue : " + queue); // queue print
String name = queue.remove(); // Dequeue
System.out.println("Removed from queue : " + name);
System.out.println(queue);
name = queue.poll(); // altrenative deque method
System.out.println("Removed from queue : " + name);
System.out.println(queue);
}
}
Comme vous pouvez le voir dans l’exemple de code ci-dessus, nous avons utilisé la méthode remove()
afin de supprimer un élément de la file d’attente. Il lèvera une exception non vérifiée si vous essayez de supprimer un élément d’une file d’attente vide.
queue.poll()
La méthode alternative de remove()
est poll()
qui renvoie la valeur NULL
lors de la suppression d’un élément d’une file d’attente vide. Jetez un œil à la sortie du code ci-dessus.
Queue : [Bill Gates, Mark Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump]
Removed from queue : Bill Gates
[Mark Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump]
Removed from queue : Mark Mark Zuckerberg
[Elon Musk, Jeff Bezos, Donald Trump]
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn