|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectheaps.generic.GenericHeap<TimeAssociation<T>>
heaps.event.EventHeap<T>
heaps.event.hierarchy.BetweenHeap<T>
T
- all heap objects are of time TimeAssociation<T>
public class BetweenHeap<T extends HeapChild>
A wrapper for a EventHeap
object, allowing it to be presented as
both a timer (by implementing interface HeapChild
, enabling
it to be added into other heaps), and a heap into which timers can be added
(by implementing interface HeapParent
). In a hierarchy of
this timers, instances of this class are used between the root and any leaf.
Constructor Summary | |
---|---|
BetweenHeap(HeapParent<HeapChild> _hp,
EventHeap<T> _h)
Creates a new wrapper for a TimedHeap object, allowing it
to be used as an intermediate node along a hierarchy of heaps. |
Method Summary | |
---|---|
boolean |
add(TimeAssociation<T> element)
Adds the object element to the heap. |
boolean |
allowsDuplicates()
Returns whether this heap allows duplicate elements. |
void |
clear()
Removes all elements from the heap. |
boolean |
contains(TimeAssociation<T> element)
Returns whether the heap contains the argument element . |
boolean |
containsElement(T element)
Returns whether there exists a TimeAssociation in the heap
that is associated with the given element parameter. |
TimeAssociation<T> |
extract()
Extracts the next element from the heap. |
TimeAssociation<T> |
getNextTime(T element)
Returns the first TimeAssociation in the heap that is
associated with the given element parameter. |
int |
getSize()
Returns the number of elements in the heap. |
boolean |
isEmpty()
Returns true if the heap is empty, false
otherwise. |
void |
process(long curr_time)
This callback method is invoked when the heap that this timer is part of has determined that the timer has expired. |
boolean |
remove(T element)
This method is invoked by a timer when it wishes to remove itself from the heap, so that its process method is never invoked. |
boolean |
remove(TimeAssociation<T> element)
Finds the object in the heap equal to element , removes
it, and returns true . |
TimeAssociation<T> |
removeNextTime(T element)
Returns and removes the first TimeAssociation in the heap
that is associated with the given element parameter. |
boolean |
setNextTime(TimeAssociation<T> element,
boolean do_add)
Substitues the given parameter for the first TimeAssociation
in the heap that is associated with the object returned by method
getObject of the parameter. |
TimeAssociation<T> |
top()
Returns the next object element to be extracted from the heap without actually removing it from the heap. |
void |
update(TimeAssociation<T> element)
This method is invoked by a timer when it wishes to add itself to the heap, or when it wishes to change the time at which it should be invoked. |
Methods inherited from class heaps.generic.GenericHeap |
---|
getComparator |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public BetweenHeap(HeapParent<HeapChild> _hp, EventHeap<T> _h)
TimedHeap
object, allowing it
to be used as an intermediate node along a hierarchy of heaps.
_hp
- the parent heap in which this object should insert itself as a timer, as
needed_h
- the TimedHeap
object to wrap as both a timer and a heap for
timersMethod Detail |
---|
public void clear()
Heap
clear
in interface Heap<TimeAssociation<T extends HeapChild>>
public boolean add(TimeAssociation<T> element)
GenericHeap
element
to the heap. If the implementing
heap allows duplicates, element
is always added to the
heap and this method returns true
. If the implementing
heap does not allow duplicates, element
is added and
method returns true
only if no duplicate of
element
exists in the heap. Otherwise, if a duplicate
exists in the heap and none are allowed, this method returns
false
and the heap remains unchanged.
add
in class GenericHeap<TimeAssociation<T extends HeapChild>>
element
- the object to add to the heap
true
if element
is added,
false
otherwisepublic TimeAssociation<T> top()
Heap
Comparable
. If the heap is
empty, null
is returned.
top
in interface Heap<TimeAssociation<T extends HeapChild>>
public TimeAssociation<T> extract()
Heap
Comparable
. If the
heap is empty, null
is returned.
extract
in interface Heap<TimeAssociation<T extends HeapChild>>
public boolean containsElement(T element)
EventHeap
TimeAssociation
in the heap
that is associated with the given element
parameter.
containsElement
in class EventHeap<T extends HeapChild>
element
- the element to query for in the heap
true
if a TimeAssociation
exists
associated with element
, false
otheriwsepublic boolean contains(TimeAssociation<T> element)
GenericHeap
element
.
contains
in class GenericHeap<TimeAssociation<T extends HeapChild>>
element
- the element to query for membership in the heap
true
if element
is in the heap,
false
otherwisepublic int getSize()
Heap
getSize
in interface Heap<TimeAssociation<T extends HeapChild>>
public TimeAssociation<T> getNextTime(T element)
EventHeap
TimeAssociation
in the heap that is
associated with the given element
parameter. That is, of
all the TimeAssociation
elements that are associated with
the given parameter, the one returned has the smallest value returned by
method getTime
. If no such element exists, this method
returns null
.
getNextTime
in class EventHeap<T extends HeapChild>
element
- the element to query for in the list
TimeAssociation
whose event is equal to
argument event
, or null
if none existspublic boolean isEmpty()
Heap
true
if the heap is empty, false
otherwise. This is equivalent to returning true if and only if
getSize
returns 0
.
isEmpty
in interface Heap<TimeAssociation<T extends HeapChild>>
true
if the heap is empty, false
otherwisepublic boolean setNextTime(TimeAssociation<T> element, boolean do_add)
EventHeap
TimeAssociation
in the heap that is associated with the object returned by method
getObject
of the parameter. Thus, if the object returned
by method getObject
is only present once in the heap, this
method is equivalent to updating its time. If no such
TimeAssociation
object exists, this method has the same
effect as calling method add(element)
in interface
GenericHeap
if flag do_add
is
true
; otherwise, this method returns false
and has no effect.
setNextTime
in class EventHeap<T extends HeapChild>
element
- the element to update in the heapdo_add
- if true
, then element
will be added to the
heap even if not already present
element
was either updated or addedpublic boolean allowsDuplicates()
GenericHeap
allowsDuplicates
in class GenericHeap<TimeAssociation<T extends HeapChild>>
true
if this heap permits duplicates,
false
otherwisepublic TimeAssociation<T> removeNextTime(T element)
EventHeap
TimeAssociation
in the heap
that is associated with the given element
parameter. That
is, of all the TimeAssociation
elements that are
associated with the given parameter, the one removed has the smallest
value returned by method getTime
. If no such element
exists, the heap remains unchanged and this method returns
null
.
removeNextTime
in class EventHeap<T extends HeapChild>
element
- the element to remove from the list
TimeAssociation
that was removed from the
heap, or null
if the list remains unchangedpublic boolean remove(TimeAssociation<T> element)
GenericHeap
element
, removes
it, and returns true
. If no such object exists, this
method returns false
and the heap remains unchanged. Note
that if duplicates are allowed in the heap, any one of the duplicates of
element
could be removed.
remove
in class GenericHeap<TimeAssociation<T extends HeapChild>>
element
- the element to remove from the heap
true
if element
is removed,
false
otherwisepublic void process(long curr_time)
HeapChild
curr_time
, should be no less than the time at which this
timer asked to be invoked.
process
in interface HeapChild
curr_time
- the current time, in millisecondspublic void update(TimeAssociation<T> element)
HeapParent
update
in interface HeapParent<T extends HeapChild>
element
- the timer to add or update in the heappublic boolean remove(T element)
HeapParent
process
method is never invoked.
remove
in interface HeapParent<T extends HeapChild>
element
- the timer to remove from the heap
true
if element
is successfully
removed from the heap, false
otherwise
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |