Class EvictingQueue<E>
java.lang.Object
com.google.common.collect.ForwardingObject
com.google.common.collect.ForwardingCollection<E>
com.google.common.collect.ForwardingQueue<E>
com.google.common.collect.EvictingQueue<E>
- All Implemented Interfaces:
Serializable
,Iterable<E>
,Collection<E>
,Queue<E>
@GwtCompatible
public final class EvictingQueue<E>
extends ForwardingQueue<E>
implements Serializable
A non-blocking queue which automatically evicts elements from the head of the queue when
attempting to add new elements onto the queue and it is full. This queue orders elements FIFO
(first-in-first-out). This data structure is logically equivalent to a circular buffer (i.e.,
cyclic buffer or ring buffer).
An evicting queue must be configured with a maximum size. Each time an element is added to a full queue, the queue automatically removes its head element. This is different from conventional bounded queues, which either block or reject new elements when full.
This class is not thread-safe, and does not accept null elements.
- Since:
- 15.0
- Author:
- Kurt Alfred Kluever
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Adds the given element to this queue.boolean
addAll
(Collection<? extends E> collection) static <E> EvictingQueue
<E> create
(int maxSize) Creates and returns a new evicting queue that will hold up tomaxSize
elements.delegate()
Returns the backing delegate instance that methods are forwarded to.boolean
Adds the given element to this queue.int
Returns the number of additional elements that this queue can accept without evicting; zero if the queue is currently full.Object[]
toArray()
Methods inherited from class com.google.common.collect.ForwardingQueue
element, peek, poll, remove, standardOffer, standardPeek, standardPoll
Methods inherited from class com.google.common.collect.ForwardingCollection
clear, contains, containsAll, isEmpty, iterator, remove, removeAll, retainAll, size, standardAddAll, standardClear, standardContains, standardContainsAll, standardIsEmpty, standardRemove, standardRemoveAll, standardRetainAll, standardToArray, standardToArray, standardToString, toArray
Methods inherited from class com.google.common.collect.ForwardingObject
toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Collection
clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray
-
Method Details
-
create
Creates and returns a new evicting queue that will hold up tomaxSize
elements.When
maxSize
is zero, elements will be evicted immediately after being added to the queue. -
remainingCapacity
Returns the number of additional elements that this queue can accept without evicting; zero if the queue is currently full.- Since:
- 16.0
-
delegate
Description copied from class:ForwardingObject
Returns the backing delegate instance that methods are forwarded to. Abstract subclasses generally override this method with an abstract method that has a more specific return type, such asForwardingSet.delegate()
. Concrete subclasses override this method to supply the instance being decorated.- Specified by:
delegate
in classForwardingQueue<E>
-
offer
Adds the given element to this queue. If the queue is currently full, the element at the head of the queue is evicted to make room. -
add
Adds the given element to this queue. If the queue is currently full, the element at the head of the queue is evicted to make room.- Specified by:
add
in interfaceCollection<E>
- Specified by:
add
in interfaceQueue<E>
- Overrides:
add
in classForwardingCollection<E>
- Returns:
true
always
-
addAll
- Specified by:
addAll
in interfaceCollection<E>
- Overrides:
addAll
in classForwardingCollection<E>
-
toArray
- Specified by:
toArray
in interfaceCollection<E>
- Overrides:
toArray
in classForwardingCollection<E>
-