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.
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.
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 as ForwardingSet.delegate(). Concrete subclasses override this method to supply
the instance being decorated.
Adds all of the elements in the specified collection to this collection
(optional operation). The behavior of this operation is undefined if
the specified collection is modified while the operation is in progress.
(This implies that the behavior of this call is undefined if the
specified collection is this collection, and this collection is
Removes a single instance of the specified element from this
collection, if it is present (optional operation). More formally,
removes an element e such that
(o==null ? e==null : o.equals(e)), if
this collection contains one or more such elements. Returns
true if this collection contained the specified element (or
equivalently, if this collection changed as a result of the call).