public class EvictingPriorityBlockingQueue<E>
Bounded priority queue that evicts the last element based on priority order specified
through comparator. Elements that are added to the queue are sorted based on the specified
comparator. If the queue is full and if a new element is added to it, the new element is compared
with the last element so as to claim a spot. The evicted element (or the added item) is then
returned back. If the queue is not full, new element will be added to queue and null is returned.