Class MinMaxPriorityQueue<E>
- All Implemented Interfaces:
Iterable<E>,Collection<E>,Queue<E>
As a Queue it functions exactly as a PriorityQueue: its
head element -- the implicit target of the methods peek(), poll() and AbstractQueue.remove() -- is defined as the least element in
the queue according to the queue's comparator. But unlike a regular priority
queue, the methods peekLast(), pollLast() and
removeLast() are also provided, to act on the greatest element
in the queue instead.
A min-max priority queue can be configured with a maximum size. If so, each time the size of the queue exceeds that value, the queue automatically removes its greatest element according to its comparator (which might be the element that was just added). This is different from conventional bounded queues, which either block or reject new elements when full.
This implementation is based on the
min-max heap
developed by Atkinson, et al. Unlike many other double-ended priority queues,
it stores elements in a single array, as compact as the traditional heap data
structure used in PriorityQueue.
This class is not thread-safe, and does not accept null elements.
Performance notes:
- The retrieval operations
peek(),peekFirst(),peekLast(),AbstractQueue.element(), andsizeare constant-time - The enqueing and dequeing operations (
offer(E),add(E), and all the forms ofpoll()andAbstractQueue.remove()) run inO(log n) time - The
AbstractCollection.remove(Object)andAbstractCollection.contains(java.lang.Object)operations require linear (O(n)) time - If you only access one end of the queue, and don't use a maximum size,
this class is functionally equivalent to
PriorityQueue, but significantly slower.
- Since:
- 8.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classDeprecated.The Google Guava Core Libraries are deprecated and will not be part of the AEM SDK after April 2023 -
Method Summary
Modifier and TypeMethodDescriptionbooleanDeprecated.Adds the given element to this queue.booleanaddAll(Collection<? extends E> newElements) Deprecated.voidclear()Deprecated.Comparator<? super E> Deprecated.Returns the comparator used to order the elements in this queue.static <E extends Comparable<E>>
MinMaxPriorityQueue<E> create()Deprecated.Creates a new min-max priority queue with default settings: natural order, no maximum size, no initial contents, and an initial expected size of 11.static <E extends Comparable<E>>
MinMaxPriorityQueue<E> Deprecated.Creates a new min-max priority queue using natural order, no maximum size, and initially containing the given elements.expectedSize(int expectedSize) Deprecated.Creates and returns a new builder, configured to buildMinMaxPriorityQueueinstances sized appropriately to holdexpectedSizeelements.iterator()Deprecated.Returns an iterator over the elements contained in this collection, in no particular order.maximumSize(int maximumSize) Deprecated.Creates and returns a new builder, configured to buildMinMaxPriorityQueueinstances that are limited tomaximumSizeelements.booleanDeprecated.Adds the given element to this queue.static <B> MinMaxPriorityQueue.Builder<B> orderedBy(Comparator<B> comparator) Deprecated.Creates and returns a new builder, configured to buildMinMaxPriorityQueueinstances that usecomparatorto determine the least and greatest elements.peek()Deprecated.Deprecated.Retrieves, but does not remove, the least element of this queue, or returnsnullif the queue is empty.peekLast()Deprecated.Retrieves, but does not remove, the greatest element of this queue, or returnsnullif the queue is empty.poll()Deprecated.Deprecated.Removes and returns the least element of this queue, or returnsnullif the queue is empty.pollLast()Deprecated.Removes and returns the greatest element of this queue, or returnsnullif the queue is empty.Deprecated.Removes and returns the least element of this queue.Deprecated.Removes and returns the greatest element of this queue.intsize()Deprecated.Object[]toArray()Deprecated.Methods inherited from class java.util.AbstractQueue
element, removeMethods inherited from class java.util.AbstractCollection
contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toStringMethods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Collection
contains, containsAll, equals, hashCode, isEmpty, parallelStream, remove, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray
-
Method Details
-
create
Deprecated.Creates a new min-max priority queue with default settings: natural order, no maximum size, no initial contents, and an initial expected size of 11. -
create
public static <E extends Comparable<E>> MinMaxPriorityQueue<E> create(Iterable<? extends E> initialContents) Deprecated.Creates a new min-max priority queue using natural order, no maximum size, and initially containing the given elements. -
orderedBy
Deprecated.Creates and returns a new builder, configured to buildMinMaxPriorityQueueinstances that usecomparatorto determine the least and greatest elements. -
expectedSize
Deprecated.Creates and returns a new builder, configured to buildMinMaxPriorityQueueinstances sized appropriately to holdexpectedSizeelements. -
maximumSize
Deprecated.Creates and returns a new builder, configured to buildMinMaxPriorityQueueinstances that are limited tomaximumSizeelements. Each time a queue grows beyond this bound, it immediately removes its greatest element (according to its comparator), which might be the element that was just added. -
size
public int size()Deprecated.- Specified by:
sizein interfaceCollection<E>- Specified by:
sizein classAbstractCollection<E>
-
add
Deprecated.Adds the given element to this queue. If this queue has a maximum size, after addingelementthe queue will automatically evict its greatest element (according to its comparator), which may beelementitself.- Specified by:
addin interfaceCollection<E>- Specified by:
addin interfaceQueue<E>- Overrides:
addin classAbstractQueue<E>- Returns:
truealways
-
addAll
Deprecated.- Specified by:
addAllin interfaceCollection<E>- Overrides:
addAllin classAbstractQueue<E>
-
offer
Deprecated.Adds the given element to this queue. If this queue has a maximum size, after addingelementthe queue will automatically evict its greatest element (according to its comparator), which may beelementitself. -
poll
Deprecated. -
peek
Deprecated. -
pollFirst
Deprecated.Removes and returns the least element of this queue, or returnsnullif the queue is empty. -
removeFirst
Deprecated.Removes and returns the least element of this queue.- Throws:
NoSuchElementException- if the queue is empty
-
peekFirst
Deprecated.Retrieves, but does not remove, the least element of this queue, or returnsnullif the queue is empty. -
pollLast
Deprecated.Removes and returns the greatest element of this queue, or returnsnullif the queue is empty. -
removeLast
Deprecated.Removes and returns the greatest element of this queue.- Throws:
NoSuchElementException- if the queue is empty
-
peekLast
Deprecated.Retrieves, but does not remove, the greatest element of this queue, or returnsnullif the queue is empty. -
iterator
Deprecated.Returns an iterator over the elements contained in this collection, in no particular order.The iterator is fail-fast: If the MinMaxPriorityQueue is modified at any time after the iterator is created, in any way except through the iterator's own remove method, the iterator will generally throw a
ConcurrentModificationException. Thus, in the face of concurrent modification, the iterator fails quickly and cleanly, rather than risking arbitrary, non-deterministic behavior at an undetermined time in the future.Note that the fail-fast behavior of an iterator cannot be guaranteed as it is, generally speaking, impossible to make any hard guarantees in the presence of unsynchronized concurrent modification. Fail-fast iterators throw
ConcurrentModificationExceptionon a best-effort basis. Therefore, it would be wrong to write a program that depended on this exception for its correctness: the fail-fast behavior of iterators should be used only to detect bugs.- Specified by:
iteratorin interfaceCollection<E>- Specified by:
iteratorin interfaceIterable<E>- Specified by:
iteratorin classAbstractCollection<E>- Returns:
- an iterator over the elements contained in this collection
-
clear
public void clear()Deprecated.- Specified by:
clearin interfaceCollection<E>- Overrides:
clearin classAbstractQueue<E>
-
toArray
Deprecated.- Specified by:
toArrayin interfaceCollection<E>- Overrides:
toArrayin classAbstractCollection<E>
-
comparator
Deprecated.Returns the comparator used to order the elements in this queue. Obeys the general contract ofPriorityQueue.comparator, but returnsOrdering.natural()instead ofnullto indicate natural ordering.
-