devstory

Le Tutoriel de Java Queue

  1. Queue
  2. Les méthodes de Queue
  3. Examples

1. Queue

Queue (la file d'attente) est une sous-interface de Collection, elle dispose donc de toutes les fonctionnalités de Collection. Elle propose des méthodes pour accéder ou supprimer le premier élément et celles pour insérer un élément dans la file d'attente. Si vous voulez accéder à un certain élément, vous devez supprimer tous les éléments qui le précèdent de la file d'attente.
Queue est une Collection qui autorise les éléments dupliqués mais pas les éléments null.
Prenons l'exemple d'une file d'attente dans un bar. À un moment où seule la première personne de la file d'attente est servie, le nouvel arrivant sera inséré quelque part dans la file d'attente. Cela peut ne pas être la dernière position, selon le type de file d'attente et la priorité du nouvel arrivant.
public interface Queue<E> extends Collection<E>
Hiérarchie des interfaces dans Java Collection Framework:
La hiérarchie des classes dans le groupe Queue:
Les relations entre les interfaces et les classes dans le groupe Queue:
LinkedList est une classe spéciale qui appartient à la fois au groupe List et à celui de Queue:

2. Les méthodes de Queue

En dehors des méthodes héritées de Collection, Queue dispose de ses propres méthodes:
boolean add(E e);
boolean offer(E e);

E remove();
E poll();

E element();
E peek();
Throws exception
Returns special value
Insert
boolean add(E)
boolean offer(E)
Remove
E remove()
E poll()
Examine
E element()
E peek()
boolean add(E)* / boolean offer(E)
boolean add(E)
Insérer un élément dans Queue. S'il n'y a plus d'espace à insérer, cette méthode lancera une exception. La méthode renvoie true si l'insertion réussit.
boolean offer(E)
Insérer un élément dans Queue. Si Queue n'a plus d'espace ou échoue, la méthode renvoie false.
Lorsqu'un élément est inséré dans Queue, sa position est déterminée par le type de Queue et la priorité de l'élément. Vous ne pouvez pas spécifier sa position.
En fonction du type de Queue que vous utilisez, cela peut limiter le nombre d'éléments ou augmenter la taille automatiquement.
E remove()* / E poll()
E remove()
Renvoyer le premier élément de Queue et le supprimer de Queue. Cette méthode lance une exception si Queue ne dispose d'aucun élément.
E poll()
Renvoyer le premier élément de Queue et le supprimer de Queue. Cette mèethode renvoie à null si Queue ne dispose d'aucun élément.
E element() * / E peek()
E element()
Renvoyer le premier élément de Queue mais ne pas le supprimer de Queue. Cette méthode lance une exception si Queue ne dispose d'aucun élément.
E peek()
Renvoyer le premier élément de Queue mais ne pas le supprimer de Queue. Cette méthode renvoie à null si Queue ne dispose d'aucun élément.

3. Examples

LinkedList(Queue)
LinkedList représente une file d'attente traditionnelle. Les méthodes add/offer ajoutent un élément à la queue de cette file d'attente.
LinkedListEx1.java
package org.o7planning.queue.ex;

import java.util.LinkedList;
import java.util.Queue;

public class LinkedListEx1 {

    public static void main(String[] args) {
       // Create Queue     
       Queue<String> queue = new LinkedList<String>();
       
       queue.offer("One");
       queue.offer("Two");
       queue.offer("Three");
       queue.offer("Four");
       queue.offer("Five");
       
       String current;
       
       while((current = queue.poll())!= null) {
           System.out.println(current);
       }
    }
}
Output:
One
Two
Three
Four
Five
PriorityQueue
PriorityQueue est une Queue qui peut trier automatiquement les éléments par leur ordre de priorité ou par un Comparator donné. Cela signifie qu'un élément inséré dans PriorityQueue peut ne pas être en dernière position.
Par exemple, une PriorityQueue<String> trie les éléments par ordre alphabétique.
PriorityQueueEx1.java
package org.o7planning.queue.ex;

import java.util.PriorityQueue;
import java.util.Queue;

public class PriorityQueueEx1 {

    public static void main(String[] args) {
       // Create Queue     
       Queue<String> queue = new PriorityQueue<String>();
       
       queue.offer("One");
       queue.offer("Two");
       queue.offer("Three");
       queue.offer("Four");
       queue.offer("Five");
       
       String current;
       
       while((current = queue.poll())!= null) {
           System.out.println(current);
       }
    }
}
Output:
Five
Four
One
Three
Two