goldman.collection.priority
Class PairingHeap.Tracker

java.lang.Object
  extended by goldman.collection.AbstractCollection.AbstractLocator<E>
      extended by goldman.collection.priority.PairingHeap.Tracker
All Implemented Interfaces:
Locator<E>, PriorityQueueLocator<E>, Cloneable, Iterator<E>
Enclosing class:
PairingHeap<E>

protected class PairingHeap.Tracker
extends AbstractCollection.AbstractLocator<E>
implements PriorityQueueLocator<E>


Field Summary
 
Fields inherited from class goldman.collection.AbstractCollection.AbstractLocator
versionNumber
 
Method Summary
 boolean advance()
          Moves the tracker to the next element in the iteration order (or {\texttt AFT} if the last element is currently tracked).
 void decreasePriority(E element)
          Replaces the tracked element by element
REQUIRES: the given parameter is less than e, or that e is the parameter being passed and its value has been mutated to have a lower priority than it had previously.
 E get()
          Returns the element associated with this locator.
 boolean hasNext()
           
 boolean inCollection()
          Returns true if and only if the locator is at an element of the collection.
 void increasePriority(E element)
          Replaces the tracked element by element
REQUIRES: the given parameter is greater than e, or that e is the parameter being passed and its value has been mutated to have a higher priority than it had previously.
 void remove()
          Removes the tracked element and updates the tracker to be at the element in the iteration order that preceded the one removed.
 boolean retreat()
          Moves the tracker to the previous element in the iteration order (or FORE if the first element is currently tracked).
 void update(E element)
          Replaces the tracked element by element
REQUIRES: element is different than the element at the current tracker position
 
Methods inherited from class goldman.collection.AbstractCollection.AbstractLocator
checkValidity, ignoreConcurrentModifications, ignorePriorConcurrentModifications, next, updateVersion
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface goldman.collection.Locator
ignoreConcurrentModifications, ignorePriorConcurrentModifications
 
Methods inherited from interface java.util.Iterator
next
 

Method Detail

inCollection

public boolean inCollection()
Description copied from interface: Locator
Returns true if and only if the locator is at an element of the collection.

Specified by:
inCollection in interface Locator<E>
Returns:
true if and only if the tracked element is currently in the collection.

get

public E get()
Description copied from interface: Locator
Returns the element associated with this locator. When a tracker is used, the element associated with the locator might no longer be in the collection. If desired, the inCollection method can be used to determine if a tracked element is currently in the collection. If the locator is at FORE or AFT then a NoSuchElementException is thrown.

Specified by:
get in interface Locator<E>
Returns:
the tracked element
Throws:
NoSuchElementException - tracker is not at an element in the collection.

advance

public boolean advance()
Moves the tracker to the next element in the iteration order (or {\texttt AFT} if the last element is currently tracked).

Specified by:
advance in interface Locator<E>
Returns:
true if and only if after the update, the tracker is at an element of the collection.
Throws:
AtBoundaryException - the tracker is at AFT since there is no place to advance.

retreat

public boolean retreat()
Moves the tracker to the previous element in the iteration order (or FORE if the first element is currently tracked).

Specified by:
retreat in interface Locator<E>
Returns:
true if and only if after the update, the tracker is at an element of the collection.
Throws:
AtBoundaryException - the tracker is at FORE since there is no place to retreat.

hasNext

public boolean hasNext()
Specified by:
hasNext in interface Iterator<E>
Returns:
true if there is some element after the current tracker position.

remove

public void remove()
Removes the tracked element and updates the tracker to be at the element in the iteration order that preceded the one removed.

Specified by:
remove in interface Iterator<E>
Throws:
NoSuchElementException - the tracker is at FORE or AFT

update

public void update(E element)
Replaces the tracked element by element
REQUIRES: element is different than the element at the current tracker position

Specified by:
update in interface PriorityQueueLocator<E>

increasePriority

public void increasePriority(E element)
Replaces the tracked element by element
REQUIRES: the given parameter is greater than e, or that e is the parameter being passed and its value has been mutated to have a higher priority than it had previously.

Specified by:
increasePriority in interface PriorityQueueLocator<E>

decreasePriority

public void decreasePriority(E element)
Replaces the tracked element by element
REQUIRES: the given parameter is less than e, or that e is the parameter being passed and its value has been mutated to have a lower priority than it had previously.

Specified by:
decreasePriority in interface PriorityQueueLocator<E>