codestory

Die Anleitung zu Java Queue

  1. Queue
  2. Die Methode von Queue
  3. Examples

1. Queue

Queue (Warteschlange) ist eine untergeordnete Interface von Collection und verfügt daher über alle Funktionen von Collection. Es enthält die Methoden zum Zugreifen auf oder Entfernen des ersten Elements sowie Methoden zum Einfügen eines Elements in die Warteschlange. Wenn auf ein bestimmtes Element zugreifen möchten, müssen Sie alle vorhergehenden Elements aus der Warteschlange entfernen.
Queue ist eine Collection, die doppelte Elemente, jedoch keine Elemente null erlaubt.
Ein häufiges Beispiel ist eine Warteschlange an einer Bar. Zu einem Zeitpunkt, an dem nur die erste Person in der Warteschlange bedient wird, wird der Neuankömmling irgendwo in die Warteschlange eingefügt. Dies ist möglichweise nicht die letzte Position. Dies hängt vom Warteschlangetyp und Priorität der Neuankömmlinge ab.
public interface Queue<E> extends Collection<E>
Die Hierarchie der Interface in Java Collection Framework:
Die Hierarchie der Klasse in der Gruppe von Queue:
Die Beziehung zwischen der Interface und der Klasse in die Gruppe Queue:
LinkedList ist eine besondere Klasse, es gehört sowohl zur Gruppe List als auch zur Gruppe Queue:

2. Die Methode von Queue

Zusätzlich zu den von Collection geerbten Methoden verfügten Queue auch über seine eigene Methoden:
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)
Fügt ein Element in Queue ein. Wenn kein Platz mehr zum Einfügen vorhanden ist, löst diese Methode eine Ausname aus. Die Methode gibt true zurück, wenn das Einfügen erfolgreich war.
boolean offer(E)
Fügt ein Element in Queue ein. Wenn Queuekein Platz mehr zum Einfügen oder kein erfolgreichen Einfügen hat, gibt die Methode false zurück.
Wenn ein Element in Queue eingefügt wird, wird seine Position durch das Typ vom Queue und die Priorität des Element bestimmt. Sie können seine Position nicht angeben.
Abhängig von dem Typ vom Queue kann die Anzahl der Elemente begrenzt oder die Größe automatisch erhöht werden.
E remove()* / E poll()
E remove()
Gibt das erste Element vom Queue zurück, während es aus der Queue entfernt wird. Diese Methode löst eine Ausnahme aus, wenn Queue keine Elemente enthält.
E poll()
Gibt das erste Element vom Queue zurück, während es aus der Queue entfernt wird. Diese Methode gibt null aus wenn Queue keine Elemente enthält.
E element() * / E peek()
E element()
Gibt das erste Element der Queue zurück, aber es entfernt nicht aus Queue. Diese Methode löst eine Ausnahme aus, wenn Queue kein Elemente enthält.
E peek()
Gibt das erste Element von Queue zurück, aber es entfernt nicht aus Queue. Diese Methode gibt null zurück wenn Queue keine Elemente hat.

3. Examples

LinkedList(Queue)
LinkedList vertretet eine traditionelle Warteschlange. Die Methode add/offer wird der Ende der Warteschlange ein Element einfügen.
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 ist eine Queue, die die Elemente automatisch nach ihrer Prioritätsreihenfolge oder nach einem bereitgestellten Comparator sortieren kann. Dies bedeutet, dass sich ein in PriorityQueue eingefügtes Element möglichweise nicht an der letzten Position befindet.
Z.B: Ein PriorityQueue<String> ordnet die Reihenfolge der Elemente nach Alphabet
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