Le Tutoriel de Java Queue
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:
- Collection
- Deque
- BlockingQueue
- TransferQueue
- BlockingDeque
- Set
- List
- NavigableSet
- SortedSet
La hiérarchie des classes dans le groupe Queue:
Les relations entre les interfaces et les classes dans le groupe Queue:
- LinkedList
- ArrayDeque
- PriorityQueue
- LinkedBlockingDeque
- ConcurrentLinkedQueue
- LinkedTransferQueue
- ArrayBlockingQueue
- ConcurrentLinkedDeque
- DelayQueue
- LinkedBlockingQueue
- PriorityBlockingQueue
- SynchronousQueue
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
Tutoriels de Java Collections Framework
- Le Tutoriel de Java PriorityBlockingQueue
- Tutoriel Java Collections Framework
- Le Tutoriel de Java SortedSet
- Le Tutoriel de Java List
- Le Tutoriel de Java Iterator
- Le Tutoriel de Java NavigableSet
- Le Tutoriel de Java ListIterator
- Le Tutoriel de Java ArrayList
- Le Tutoriel de Java CopyOnWriteArrayList
- Le Tutoriel de Java LinkedList
- Le Tutoriel de Java Set
- Le Tutoriel de Java TreeSet
- Le Tutoriel de Java CopyOnWriteArraySet
- Le Tutoriel de Java Queue
- Le Tutoriel de Java Deque
- Le Tutoriel de Java IdentityHashMap
- Le Tutoriel de Java WeakHashMap
- Le Tutoriel de Java Map
- Le Tutoriel de Java SortedMap
- Le Tutoriel de Java NavigableMap
- Le Tutoriel de Java HashMap
- Le Tutoriel de Java TreeMap
- Le Tutoriel de Java PriorityQueue
- Le Tutoriel de Java BlockingQueue
- Le Tutoriel de Java ArrayBlockingQueue
- Le Tutoriel de ava TransferQueue
Show More