package javacodebook.collections.queue; import java.util.*; /** * Eine einfache Warteschlange, die als interne Datenstruktur eine LinkedList * verwendet, in der Elemente ans Ende angefügt und am Anfang entnommen werden. */ public class Queue { protected LinkedList queue; /** Erzeugt eine leere Warteschlange mit variabler Größe */ public Queue() { queue = new LinkedList(); } /** Fügt ein Element ans Ende der Warteschlange ein */ public void insert(Object item) { queue.addLast(item); } /** Entfernt ein Elment vom Anfang der Warteschlange und gibt es zurück */ public Object remove() { if(isEmpty()) throw new EmptyQueueException(); Object o = queue.removeFirst(); return o; } /** Gibt das Erste Element am Anfang der Warteschlange zurück, ohne es zu * entfernen. */ public Object peek() { if(isEmpty()) throw new EmptyQueueException(); return queue.getFirst(); } /** Überprüft, ob die Warteschlange Elemente enthält. */ public boolean isEmpty() { return queue.size() == 0; } /** Gibt die Anzahl der Elemente in der Warteschlange zurück */ public int size() { return queue.size(); } } --- Neue Klasse --- package javacodebook.collections.queue; public class EmptyQueueException extends RuntimeException { public EmptyQueueException() { super(); } public EmptyQueueException(String message) { super(message); } } --- Neue Klasse --- package javacodebook.collections.queue; /** * Beispiel für die Benutzung einer Warteschlange. */ public class QueueUsage { public static void main(String[] args) { Queue queue = new Queue(); queue.insert("Eins"); queue.insert("Zwei"); queue.insert("Drei"); System.out.println(queue.remove()); System.out.println(queue.peek()); System.out.println(queue.remove()); System.out.println(queue.remove()); if(queue.isEmpty()) System.out.println("Die Warteschlange enthält keine Elemente mehr"); } }