L'interface Queue est disponible dans le package java.util et étend l'interface Collection. Il permet de conserver les éléments traités selon le principe FIFO (First In First Out). Il s'agit d'une liste ordonnée d'objets, dans laquelle l'insertion d'éléments a lieu à la fin de la liste et la suppression d'éléments a lieu au début de la liste.
Étant une interface, la file d'attente nécessite, pour la déclaration, une classe concrète, et les classes les plus courantes sont LinkedList et PriorityQueue en Java. Les implémentations effectuées par ces classes ne sont pas thread-safe. S’il est nécessaire d’avoir une implémentation thread-safe, PriorityBlockingQueue est une option disponible.
Déclaration d'interface de file d'attente
public interface Queue extends Collection
Méthodes de l'interface de file d'attente Java
Méthode | Description |
---|---|
booléen ajouter (objet) | Il est utilisé pour insérer l'élément spécifié dans cette file d'attente et renvoyer true en cas de succès. |
offre booléenne (objet) | Il est utilisé pour insérer l'élément spécifié dans cette file d'attente. |
Objet supprimer() | Il est utilisé pour récupérer et supprimer la tête de cette file d'attente. |
Sondage d'objet() | Il est utilisé pour récupérer et supprimer la tête de cette file d'attente, ou renvoie null si cette file d'attente est vide. |
Élément d'objet() | Il permet de récupérer, mais ne supprime pas, la tête de cette file d'attente. |
Aperçu de l'objet() | Il est utilisé pour récupérer, mais ne supprime pas, la tête de cette file d'attente, ou renvoie null si cette file d'attente est vide. |
Caractéristiques d'une file d'attente
Voici quelques fonctionnalités importantes d’une file d’attente.
couleurs Java
- Comme indiqué précédemment, le concept FIFO est utilisé pour l'insertion et la suppression d'éléments d'une file d'attente.
- La file d'attente Java prend en charge toutes les méthodes de l'interface Collection, y compris la suppression, l'insertion, etc.
- PriorityQueue, ArrayBlockingQueue et LinkedList sont les implémentations les plus fréquemment utilisées.
- L'exception NullPointerException est levée si une opération nulle est effectuée sur les BlockingQueues.
- Les files d'attente présentes dans le util package sont connus sous le nom de files d’attente illimitées.
- Les files d'attente présentes dans le utile package sont connus sous le nom de files d’attente limitées.
- Toutes les files d'attente, à l'exception des Deques, facilitent le retrait et l'insertion en tête et en queue de la file d'attente ; respectivement. En fait, les deques prennent en charge l'insertion et le retrait d'éléments aux deux extrémités.
Classe PriorityQueue
PriorityQueue est également une classe définie dans le cadre de collection qui nous permet de traiter les objets en fonction de la priorité. Il a déjà été décrit que l'insertion et la suppression d'objets suivent le modèle FIFO dans la file d'attente Java. Cependant, il arrive parfois que les éléments de la file d'attente doivent être traités en fonction de la priorité, c'est là qu'une PriorityQueue entre en action.
Déclaration de classe PriorityQueue
Voyons la déclaration de la classe java.util.PriorityQueue.
public class PriorityQueue extends AbstractQueue implements Serializable
Exemple de file d'attente prioritaire Java
Nom de fichier: TestCollection12.java
tableau de réaction
import java.util.*; class TestCollection12{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit'); queue.add('Vijay'); queue.add('Karan'); queue.add('Jai'); queue.add('Rahul'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } }Testez-le maintenant
Sortir:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Exemple Java PriorityQueue : livre
Voyons un exemple de PriorityQueue dans lequel nous ajoutons des livres à la file d'attente et imprimons tous les livres. Les éléments de PriorityQueue doivent être de type Comparable. Les classes String et Wrapper sont comparables par défaut. Pour ajouter des objets définis par l'utilisateur dans PriorityQueue, vous devez implémenter l'interface Comparable.
Nom de fichier: LinkedListExample.java
tri de liste de tableaux Java
import java.util.*; class Book implements Comparable{ int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } public int compareTo(Book b) { if(id>b.id){ return 1; }else if(id <b.id){ return -1; }else{ 0; } public class linkedlistexample { static void main(string[] args) queue priorityqueue(); creating books book b1="new" book(121,'let us c','yashwant kanetkar','bpb',8); b2="new" book(233,'operating system','galvin','wiley',6); b3="new" book(101,'data communications & networking','forouzan','mc graw hill',4); adding to the queue.add(b1); queue.add(b2); queue.add(b3); system.out.println('traversing elements:'); traversing elements for(book b:queue){ system.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); queue.remove(); system.out.println('after removing one record:'); < pre> <p> <strong>Output:</strong> </p> <pre>Traversing the queue elements: 101 Data Communications & Networking Forouzan Mc Graw Hill 4 233 Operating System Galvin Wiley 6 121 Let us C Yashwant Kanetkar BPB 8 After removing one book record: 121 Let us C Yashwant Kanetkar BPB 8 233 Operating System Galvin Wiley 6 </pre> <hr></b.id){>