|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectinf.util.RandomAccessIntPriorityQueue<E>
E - the element type for elements queuedpublic class RandomAccessIntPriorityQueue<E>
This class represents a priority queue, that is a queue in which elements can
be held and from which they can be retrieved by priority. For this purpose,
each object has a priority associated with it that determines when in
relation to the other elements in the queue this element should be retrieved.
Priorities are ints here.
The implementation of this priority queue is achieved by maintaining the elements in a sorted tree. The order is determined by the priority and each tree node contains a LinkedList of all the nodes with the same priority. In this way a reasonably efficient execution of most of the operations provided can be guaranteed even for very long queues. The removal of elements from this queue and the contains-test with a given priority are supported but inefficient. Queued elements may be null.
In addition to the operations by IntPriorityQueue which give
access to elements with lowest and highest priority, this class also supports
getting elements from the queue that are at random positions in a reasonably
efficient way. The worst case time complexity for these operations is O(n)
though, where n is the number elements queued at the same priority.
| Nested Class Summary | |
|---|---|
(package private) static class |
RandomAccessIntPriorityQueue.RAIntKeyTreeEntry<E>
|
(package private) class |
RandomAccessIntPriorityQueue.RAIntKeyTreeMapIterator<T>
|
(package private) class |
RandomAccessIntPriorityQueue.RAIntPriorityQueueIterator<T>
This class represents an iterator for the elements in an TreeOfListsIntPriorityQueue. |
| Field Summary | |
|---|---|
protected RandomAccessIntPriorityQueue.RAIntKeyTreeEntry<E> |
root
the root of the tree |
| Constructor Summary | |
|---|---|
RandomAccessIntPriorityQueue()
This constructor creates an empty PriorityQueue. |
|
| Method Summary | |
|---|---|
void |
addElementFirst(E element,
int priority)
This function adds the given element at the given priority to this priority queue. |
void |
addElementFirst(E element,
java.lang.Integer priority)
This function adds the given element at the given priority to this priority queue. |
void |
addElementLast(E element,
int priority)
This function adds the given element at the given priority to this priority queue. |
void |
addElementLast(E element,
java.lang.Integer priority)
This function adds the given element at the given priority to this priority queue. |
protected RandomAccessIntPriorityQueue<E> |
clone()
This class does not support cloning and an Exception will be thrown if this method is called. |
boolean |
containsElementAt(E element,
int priority)
This function tests whether the given element is currently in this queue at the given priority. |
boolean |
containsElementAt(E element,
java.lang.Integer priority)
This function tests whether the given element is currently in this queue at the given priority. |
boolean |
equals(java.lang.Object obj)
This class does not support equality testing and an exception will be thrown if this method is called. |
E |
getHighestFirst()
This function returns the element in this priority queue that has the highest priority. |
E |
getHighestLast()
This function returns the element in this priority queue that has the highest priority. |
E |
getLowestFirst()
This function returns the element in this priority queue that has the lowest priority. |
E |
getLowestLast()
This function returns the element in this priority queue that has the lowest priority. |
int |
getNrOfPriorities()
This function returns the number of different priorities currently used in this queue. |
int |
getNthPriority(int n)
This function determines the nth priority value used in this queue. |
int |
hashCode()
This class does not support hashing and an exception will be thrown if this method is called. |
boolean |
isEmpty()
This function tests whether this PriorityQueue is empty. |
java.util.Iterator<E> |
iterator()
This function returns an Iterator for this priority queue. |
int |
length()
This function returns the size of this priority queue. |
int |
lengthAt(int priority)
This function returns the number of elements queued at the given priority. |
boolean |
removeElementAt(E element,
int priority)
This function attempts to remove the given element at the given priority from this priority queue. |
boolean |
removeElementAt(E element,
java.lang.Integer priority)
This function attempts to remove the given element at the given priority from this priority queue. |
E |
removeFirstAt(int priority)
This function removes and returns the element that is at the front of the queue at the given priority. |
E |
removeHighestFirst()
This function removes and returns the element in this priority queue that has the highest priority. |
E |
removeHighestLast()
This function removes and returns the element in this priority queue that has the highest priority. |
E |
removeLastAt(int priority)
This function removes and returns the element that is at the end of the queue at the given priority. |
E |
removeLowestFirst()
This function removes and returns the element in this priority queue that has the lowest priority. |
E |
removeLowestLast()
This function removes and returns the element in this priority queue that has the lowest priority. |
E |
removeNthAt(int priority,
int n)
This function removes and returns the nth element at the given priority in this queue. |
E |
removeNthElement(int n)
This function removes and returns the nth element in this queue. |
java.lang.String |
toString()
This function creates the printable string representation of this priority queue. |
| Methods inherited from class java.lang.Object |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
protected RandomAccessIntPriorityQueue.RAIntKeyTreeEntry<E> root
| Constructor Detail |
|---|
public RandomAccessIntPriorityQueue()
This constructor creates an empty PriorityQueue.
| Method Detail |
|---|
protected RandomAccessIntPriorityQueue<E> clone()
throws java.lang.CloneNotSupportedException
This class does not support cloning and an Exception will be thrown if this method is called.
clone in class java.lang.Objectjava.lang.CloneNotSupportedException - will be thrown
public void addElementFirst(E element,
java.lang.Integer priority)
This function adds the given element at the given priority to this priority queue. If there are already elements queued at this priority, the new element will be queued at the front.
addElementFirst in interface PriorityQueue<E,java.lang.Integer>element - the element to be added to this IntPriorityQueuepriority - the priority with which the element is to be queued
public void addElementLast(E element,
java.lang.Integer priority)
This function adds the given element at the given priority to this priority queue. If there are already elements queued at this priority, the new element will be queued at the end.
addElementLast in interface PriorityQueue<E,java.lang.Integer>element - the element to be added to this IntPriorityQueuepriority - the priority with which the element is to be queuedpublic boolean isEmpty()
This function tests whether this PriorityQueue is empty.
isEmpty in interface PriorityQueue<E,java.lang.Integer>public int length()
This function returns the size of this priority queue.
length in interface PriorityQueue<E,java.lang.Integer>
public E getLowestFirst()
throws java.util.NoSuchElementException
This function returns the element in this priority queue that has the lowest priority. If there are several elements queued at that priority, the element at the front of the list is retrieved. An exception is thrown if there is no such element, i.e. if this priority queue is empty.
getLowestFirst in interface PriorityQueue<E,java.lang.Integer>java.util.NoSuchElementException - if this PriorityQueue is empty
public E getLowestLast()
throws java.util.NoSuchElementException
This function returns the element in this priority queue that has the lowest priority. If there are several elements queued at that priority, the element at the end of the list is retrieved. An exception is thrown if there is no such element, i.e. if this priority queue is empty.
getLowestLast in interface PriorityQueue<E,java.lang.Integer>java.util.NoSuchElementException - if this PriorityQueue is empty
public E getHighestFirst()
throws java.util.NoSuchElementException
This function returns the element in this priority queue that has the highest priority. If there are several elements queued at that priority, the element at the front of the list is retrieved. An exception is thrown if there is no such element, i.e. if this priority queue is empty.
getHighestFirst in interface PriorityQueue<E,java.lang.Integer>java.util.NoSuchElementException - if this PriorityQueue is empty
public E getHighestLast()
throws java.util.NoSuchElementException
This function returns the element in this priority queue that has the highest priority. If there are several elements queued at that priority, the element at the end of the list is retrieved. An exception is thrown if there is no such element, i.e. if this priority queue is empty.
getHighestLast in interface PriorityQueue<E,java.lang.Integer>java.util.NoSuchElementException - if this PriorityQueue is empty
public boolean containsElementAt(E element,
java.lang.Integer priority)
This function tests whether the given element is currently in this queue at the given priority.
containsElementAt in interface PriorityQueue<E,java.lang.Integer>element - element to be tested forpriority - the priority at which it should be queued
public E removeLowestFirst()
throws java.util.NoSuchElementException
This function removes and returns the element in this priority queue that has the lowest priority. If there are several elements queued at that priority, the element at the front of the list is retrieved. An exception is thrown if there is no such element, i.e. if this priority queue is empty.
removeLowestFirst in interface PriorityQueue<E,java.lang.Integer>java.util.NoSuchElementException - if this PriorityQueue is empty
public E removeLowestLast()
throws java.util.NoSuchElementException
This function removes and returns the element in this priority queue that has the lowest priority. If there are several elements queued at that priority, the element at the end of the list is retrieved. An exception is thrown if there is no such element, i.e. if this priority queue is empty.
removeLowestLast in interface PriorityQueue<E,java.lang.Integer>java.util.NoSuchElementException - if this PriorityQueue is empty
public E removeHighestFirst()
throws java.util.NoSuchElementException
This function removes and returns the element in this priority queue that has the highest priority. If there are several elements queued at that priority, the element at the front of the list is retrieved. An exception is thrown if there is no such element, i.e. if this priority queue is empty.
removeHighestFirst in interface PriorityQueue<E,java.lang.Integer>java.util.NoSuchElementException - if this PriorityQueue is empty
public E removeHighestLast()
throws java.util.NoSuchElementException
This function removes and returns the element in this priority queue that has the highest priority. If there are several elements queued at that priority, the element at the end of the list is retrieved. An exception is thrown if there is no such element, i.e. if this priority queue is empty.
removeHighestLast in interface PriorityQueue<E,java.lang.Integer>java.util.NoSuchElementException - if this PriorityQueue is empty
public boolean removeElementAt(E element,
java.lang.Integer priority)
This function attempts to remove the given element at the given priority from this priority queue. Whether the removal was successful is returned.
removeElementAt in interface PriorityQueue<E,java.lang.Integer>element - the element to be removed from this PriorityQueuepriority - the priority at which the element is queued
public void addElementFirst(E element,
int priority)
This function adds the given element at the given priority to this priority queue. If there are already elements queued at this priority, the new element will be queued at the front.
addElementFirst in interface IntPriorityQueue<E>element - the element to be added to this IntPriorityQueuepriority - the priority with which the element is to be queued
public void addElementLast(E element,
int priority)
This function adds the given element at the given priority to this priority queue. If there are already elements queued at this priority, the new element will be queued at the end.
addElementLast in interface IntPriorityQueue<E>element - the element to be added to this IntPriorityQueuepriority - the priority with which the element is to be queued
public boolean containsElementAt(E element,
int priority)
This function tests whether the given element is currently in this queue at the given priority.
containsElementAt in interface IntPriorityQueue<E>element - element to be tested forpriority - the priority at which it should be queued
public boolean removeElementAt(E element,
int priority)
This function attempts to remove the given element at the given priority from this priority queue. Whether the removal was successful is returned.
removeElementAt in interface IntPriorityQueue<E>element - the element to be removed from this PriorityQueuepriority - the priority at which the element is queued
public java.util.Iterator<E> iterator()
This function returns an Iterator for this priority queue.
iterator in interface java.lang.Iterable<E>public int getNrOfPriorities()
This function returns the number of different priorities currently used in this queue.
public int getNthPriority(int n)
This function determines the nth priority value used in this queue. Counting starts with zero. For example, if the queue contains values at priorities 2, 4, 6 and 9 then getNthPriority(1) will return 4.
n - the rank of the sought priority (lowest has rank 0)
public int lengthAt(int priority)
This function returns the number of elements queued at the given priority.
priority - the priority at which elements are queued
public E removeFirstAt(int priority)
This function removes and returns the element that is at the front of the queue at the given priority. If there is no element queued at the given priority this function returns null.
priority - the priority at which the sought element is queued
public E removeLastAt(int priority)
This function removes and returns the element that is at the end of the queue at the given priority. If there is no element queued at the given priority this function returns null.
priority - the priority at which the sought element is queued
public E removeNthAt(int priority,
int n)
This function removes and returns the nth element at the given priority in this queue. If there is no nth element queued at the given priority this function returns null.
priority - the priority at which the sought element is queuedn - the position in the List at the given priority
public E removeNthElement(int n)
This function removes and returns the nth element in this queue. The first element has index 0.
n - the position in this queue
public boolean equals(java.lang.Object obj)
throws java.lang.UnsupportedOperationException
This class does not support equality testing and an exception will be thrown if this method is called.
equals in class java.lang.Objectobj - the Object this should be compared to
java.lang.UnsupportedOperationException - will be thrown
public int hashCode()
throws java.lang.UnsupportedOperationException
This class does not support hashing and an exception will be thrown if this method is called.
hashCode in class java.lang.Objectjava.lang.UnsupportedOperationException - will be thrownpublic java.lang.String toString()
This function creates the printable string representation of this priority queue.
toString in class java.lang.Object
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||