Class RingBuffer<T>
- Type Parameters:
T- Typ der gespeicherten Elemente
- All Implemented Interfaces:
Queue<T>
RingBuffer implementiert eine generische FIFO-Warteschlange
(Queue) mithilfe eines Ringpuffers (zirkulärer Speicher).
Die Elemente werden in einem festen Array gespeichert, das logisch zyklisch interpretiert wird. Ein Index zeigt auf das erste Element der Queue, während die Anzahl der gespeicherten Elemente separat verwaltet wird.
Diese Implementierung besitzt eine feste Kapazität und erlaubt konstante Laufzeiten für alle Queue-Operationen.
Java-Version: 17 oder höher
- Author:
- Karsten Brodmann (kb@punkt-akademie.de)
-
Constructor Summary
ConstructorsConstructorDescriptionRingBuffer(int capacity) Erzeugt einen neuenRingBuffermit fester Kapazität. -
Method Summary
Modifier and TypeMethodDescriptiondequeue()Entfernt das erste Element der Queue und liefert dessen Wert zurück.booleanempty()Prüft, ob die Queue leer ist.voidFügt ein Element am Ende der Queue ein.front()Liefert das erste Element der Queue, ohne es zu entfernen.booleanfull()Prüft, ob der Ringpuffer vollständig belegt ist.
-
Constructor Details
-
RingBuffer
Erzeugt einen neuenRingBuffermit fester Kapazität.Die Kapazität ist nach der Erzeugung unveränderlich und muss mindestens 10 betragen.
- Parameters:
capacity- maximale Anzahl speicherbarer Elemente- Throws:
IllegalArgumentException- wenncapacity < 10ist
-
-
Method Details
-
empty
public boolean empty()Prüft, ob die Queue leer ist. -
full
public boolean full()Prüft, ob der Ringpuffer vollständig belegt ist.- Returns:
true, wenn der Puffer voll ist, sonstfalse
-
enqueue
Fügt ein Element am Ende der Queue ein.Die Einfügeposition ergibt sich aus dem aktuellen Kopfindex und der Anzahl der gespeicherten Elemente, modulo der Kapazität des Puffers.
Laufzeit:
O(1)- Specified by:
enqueuein interfaceQueue<T>- Parameters:
obj- einzufügendes Element- Throws:
IndexOutOfBoundsException- wenn der Ringpuffer voll istIllegalArgumentException
-
front
Liefert das erste Element der Queue, ohne es zu entfernen.Laufzeit:
O(1)- Specified by:
frontin interfaceQueue<T>- Returns:
- erstes Element der Queue
- Throws:
IndexOutOfBoundsException- wenn die Queue leer istIllegalArgumentException
-
dequeue
Entfernt das erste Element der Queue und liefert dessen Wert zurück.Nach dem Entfernen wird der Kopfindex zyklisch weitergeschaltet. Die Referenz auf das entfernte Element wird explizit gelöscht, um Speicherlecks zu vermeiden.
Laufzeit:
O(1)- Specified by:
dequeuein interfaceQueue<T>- Returns:
- entferntes erstes Element der Queue
- Throws:
IndexOutOfBoundsException- wenn die Queue leer istIllegalArgumentException
-