|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.util.AbstractCollection edu.emory.mathcs.backport.java.util.AbstractCollection edu.emory.mathcs.backport.java.util.AbstractQueue edu.emory.mathcs.backport.java.util.PriorityQueue
An unbounded queue that supports element retrieval in the order of relative priority. The ordering can be defined via an explicit comparator; otherwise, the natural ordering of elements is used. Element at the head of the queue is always the smallest one according to the given ordering.
While this queue is logically unbounded, attempted additions may fail due to resource exhaustion (causing OutOfMemoryError). This class does not permit null elements. A priority queue relying on natural ordering also does not permit insertion of non-comparable objects (doing so results in ClassCastException).
This class and its iterator implement all of the
optional methods of the Collection
and Iterator
interfaces. The Iterator provided in method iterator()
is not guaranteed to traverse the elements of
the PriorityQueue in any particular order. If you need
ordered traversal, consider using
Arrays.sort(pq.toArray()).
Operations on this class make no guarantees about the ordering
of elements with equal priority. If you need to enforce an
ordering, you can define custom classes or comparators that use a
secondary key to break ties in primary priority values. See
PriorityBlockingQueue
for an example.
Implementation note: basic mutative methods (insert, offer, remove, poll etc) have complexity O(log(n)). Parameterless inspection methods (peek, element,isEmpty) have complexity O(1). Methods contains(Object) and remove(Object) have complexity O(n).
Constructor Summary | |
PriorityQueue()
Creates a PriorityQueue with the default initial capacity (11) that orders its elements according to their natural ordering. |
|
PriorityQueue(java.util.Collection c)
Creates a PriorityQueue containing the elements in the specified collection. |
|
PriorityQueue(java.util.Comparator comparator)
Creates a PriorityQueue with the specified initial capacity that orders its elements according to the specified comparator. |
|
PriorityQueue(int initialCapacity)
Creates a PriorityQueue with the specified initial capacity that orders its elements according to their natural ordering. |
|
PriorityQueue(int initialCapacity,
java.util.Comparator comparator)
|
|
PriorityQueue(PriorityQueue q)
Creates a PriorityQueue containing the elements from the specified priority queue. |
|
PriorityQueue(java.util.SortedSet s)
Creates a PriorityQueue containing the elements from the specified sorted set. |
Method Summary | |
boolean |
add(java.lang.Object o)
Inserts the specified element into this priority queue. |
void |
clear()
Removes all of the elements from this queue. |
java.util.Comparator |
comparator()
Returns the comparator used to order the elements in this queue, or null if this queue uses the natural ordering of its elements. |
boolean |
contains(java.lang.Object o)
Returns true if this queue contains the specified element. |
java.lang.Object |
element()
Retrieves, but does not remove, the head of this queue. |
boolean |
isEmpty()
Returns true if this queue contains no elements. |
java.util.Iterator |
iterator()
Returns an iterator over the elements in this queue. |
boolean |
offer(java.lang.Object o)
Inserts the specified element into this priority queue. |
java.lang.Object |
peek()
Retrieves, but does not remove, the head of this queue, or returns null if this queue is empty. |
java.lang.Object |
poll()
Retrieves and removes the head of this queue, or returns null if this queue is empty. |
java.lang.Object |
remove()
Retrieves and removes the head of this queue. |
boolean |
remove(java.lang.Object o)
Removes a single instance of the specified element from this queue, if it is present. |
int |
size()
Returns the number of elements in this priority queue. |
java.lang.Object[] |
toArray()
Returns an array containing all of the elements in this queue. |
java.lang.Object[] |
toArray(java.lang.Object[] a)
Returns an array containing all of the elements in this queue; the runtime type of the returned array is that of the specified array. |
Methods inherited from class edu.emory.mathcs.backport.java.util.AbstractQueue |
addAll |
Methods inherited from class java.util.AbstractCollection |
containsAll, removeAll, retainAll, 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 |
containsAll, equals, hashCode, removeAll, retainAll |
Constructor Detail |
public PriorityQueue()
public PriorityQueue(int initialCapacity)
initialCapacity
- the initial capacity for this priority queue
java.lang.IllegalArgumentException
- if initialCapacity is less
than 1public PriorityQueue(java.util.Comparator comparator)
comparator
- the comparator used to order this priority queue.
If null then the order depends on the elements' natural
ordering.
java.lang.IllegalArgumentException
- if initialCapacity is less
than 1public PriorityQueue(int initialCapacity, java.util.Comparator comparator)
public PriorityQueue(PriorityQueue q)
q
- the queue whose elements are to be placed
into this priority queue.
java.lang.NullPointerException
- if the specified queue is nullpublic PriorityQueue(java.util.SortedSet s)
s
- the set whose elements are to be placed
into this priority queue.
java.lang.NullPointerException
- if the specified set or any
of its elements are nullpublic PriorityQueue(java.util.Collection c)
SortedSet
or a PriorityQueue
, this priority queue will be sorted according to
the same comparator, or according to the natural ordering of its
elements if the collection is sorted according to the natural
ordering of its elements. Otherwise, this priority queue is
ordered according to the natural ordering of its elements.
c
- the collection whose elements are to be placed
into this priority queue.
java.lang.ClassCastException
- if elements of the specified collection
cannot be compared to one another according to the priority
queue's ordering.
java.lang.NullPointerException
- if the specified collection or any
of its elements are nullMethod Detail |
public java.util.Iterator iterator()
ConcurrentModificationException
upon
detected interference.
iterator
in interface java.util.Collection
public java.util.Comparator comparator()
public boolean offer(java.lang.Object o)
offer
in interface Queue
o
- the element to add
Queue.offer(java.lang.Object)
)
java.lang.ClassCastException
- if the specified element cannot be compared
with elements currently in the priority queue according to the
priority queue's ordering
java.lang.NullPointerException
- if the specified element is nullpublic java.lang.Object peek()
peek
in interface Queue
public java.lang.Object poll()
poll
in interface Queue
public int size()
size
in interface java.util.Collection
public boolean add(java.lang.Object o)
add
in interface Queue
add
in class AbstractQueue
o
- the element to add
Collection.add(java.lang.Object)
)
java.lang.ClassCastException
- if the specified element cannot be compared
with elements currently in the priority queue according to the
priority queue's ordering
java.lang.NullPointerException
- if the specified element is nullpublic java.lang.Object remove()
remove
in interface Queue
remove
in class AbstractQueue
public java.lang.Object element()
element
in interface Queue
element
in class AbstractQueue
java.util.NoSuchElementException
- of the queue is emptypublic boolean isEmpty()
isEmpty
in interface java.util.Collection
public boolean contains(java.lang.Object o)
contains
in interface java.util.Collection
o
- object to be checked for containment in this queue
public java.lang.Object[] toArray()
The returned array will be "safe" in that no references to it are maintained by this queue. (In other words, this method must allocate a new array). The caller is thus free to modify the returned array.
This method acts as bridge between array-based and collection-based APIs.
toArray
in interface java.util.Collection
toArray
in class AbstractCollection
public java.lang.Object[] toArray(java.lang.Object[] a)
If this queue fits in the specified array with room to spare (i.e., the array has more elements than this queue), the element in the array immediately following the end of the queue is set to null.
Like the toArray()
method, this method acts as bridge between
array-based and collection-based APIs. Further, this method allows
precise control over the runtime type of the output array, and may,
under certain circumstances, be used to save allocation costs.
Suppose x is a queue known to contain only strings. The following code can be used to dump the queue into a newly allocated array of String:
String[] y = x.toArray(new String[0]);Note that toArray(new Object[0]) is identical in function to toArray().
toArray
in interface java.util.Collection
toArray
in class AbstractCollection
a
- the array into which the elements of the queue are to
be stored, if it is big enough; otherwise, a new array of the
same runtime type is allocated for this purpose
java.lang.ArrayStoreException
- if the runtime type of the specified array
is not a supertype of the runtime type of every element in
this queue
java.lang.NullPointerException
- if the specified array is nullpublic boolean remove(java.lang.Object o)
remove
in interface java.util.Collection
o
- element to be removed from this queue, if present
public void clear()
clear
in interface java.util.Collection
clear
in class AbstractQueue
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |