Defines a collection that allows objects to be removed in some well-defined
The removal order can be based on insertion order (eg, a FIFO queue or a LIFO
stack), on access order (eg, an LRU cache), on some arbitrary comparator (eg,
a priority queue) or on any other well-defined ordering.
Note that the removal order is not necessarily the same as the iteration
Buffer implementation may have equivalent removal and
iteration orders, but this is not required.
This interface does not specify any behavior for
Object#hashCode methods. It is
therefore possible for a
Buffer implementation to also also