Class MapBinaryHeap<T>
java.lang.Object
java.util.AbstractCollection<T>
edu.uci.ics.jung.algorithms.util.MapBinaryHeap<T>
- All Implemented Interfaces:
Iterable<T>, Collection<T>, Queue<T>
An array-based binary heap implementation of a priority queue,
which also provides
efficient
update() and contains operations.
It contains extra infrastructure (a hash table) to keep track of the
position of each element in the array; thus, if the key value of an element
changes, it may be "resubmitted" to the heap via update
so that the heap can reposition it efficiently, as necessary.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classComparator used if none is specified in the constructor. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreates aMapBinaryHeapwhose heap ordering will be based on the natural ordering of the elements, which must beComparable.MapBinaryHeap(Collection<T> c) Creates aMapBinaryHeapbased on the specified collection whose heap ordering will be based on the natural ordering of the elements, which must beComparable.MapBinaryHeap(Collection<T> c, Comparator<T> comp) Creates aMapBinaryHeapbased on the specified collection whose heap ordering is based on the ordering of the elements specified byc.MapBinaryHeap(Comparator<T> comp) Creates aMapBinaryHeapwhose heap ordering is based on the ordering of the elements specified bycomp. -
Method Summary
Modifier and TypeMethodDescriptionbooleanInsertsointo this collection.voidclear()booleanelement()private voidinitialize(Comparator<T> comp) booleanisEmpty()Returnstrueif this collection contains no elements, andfalseotherwise.iterator()Returns anIteratorthat does not support modification of the heap.private intlChild(int i) Returns the index of the left child of the element at indexiof the heap.booleanprivate intparent(int i) Returns the index of the parent of the element at indexiof the heap.peek()Returns the element at the top of the heap; does not alter the heap.private voidpercolateDown(int cur) Moves the element at positioncurcloser to the bottom of the heap, or returns if no further motion is necessary.private intpercolateUp(int cur, T o) Moves the elementoat positioncuras high as it can go in the heap.poll()private intrChild(int i) Returns the index of the right child of the element at indexiof the heap.remove()booleanThis data structure does not support the removal of arbitrary elements.booleanremoveAll(Collection<?> c) This data structure does not support the removal of arbitrary elements.booleanretainAll(Collection<?> c) This data structure does not support the removal of arbitrary elements.intsize()private voidswap(int i, int j) Swaps the positions of the elements at indicesiandjof the heap.voidInforms the heap that this object's internal key value has been updated, and that its place in the heap may need to be shifted (up or down).Methods inherited from class AbstractCollection
addAll, containsAll, toArray, toArray, toStringMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Collection
addAll, containsAll, equals, hashCode, parallelStream, removeIf, spliterator, stream, toArray, toArray, toArray
-
Field Details
-
heap
-
object_indices
-
comp
-
TOP
private static final int TOP- See Also:
-
-
Constructor Details
-
MapBinaryHeap
Creates aMapBinaryHeapwhose heap ordering is based on the ordering of the elements specified bycomp.- Parameters:
comp- the comparator to use to order elements in the heap
-
MapBinaryHeap
public MapBinaryHeap()Creates aMapBinaryHeapwhose heap ordering will be based on the natural ordering of the elements, which must beComparable. -
MapBinaryHeap
Creates aMapBinaryHeapbased on the specified collection whose heap ordering will be based on the natural ordering of the elements, which must beComparable.- Parameters:
c- the collection ofComparableelements to add to the heap
-
MapBinaryHeap
Creates aMapBinaryHeapbased on the specified collection whose heap ordering is based on the ordering of the elements specified byc.- Parameters:
c- the collection of elements to add to the heapcomp- the comparator to use for items inc
-
-
Method Details
-
initialize
-
clear
public void clear()- Specified by:
clearin interfaceCollection<T>- Overrides:
clearin classAbstractCollection<T>- See Also:
-
add
Insertsointo this collection.- Specified by:
addin interfaceCollection<T>- Specified by:
addin interfaceQueue<T>- Overrides:
addin classAbstractCollection<T>
-
isEmpty
public boolean isEmpty()Returnstrueif this collection contains no elements, andfalseotherwise.- Specified by:
isEmptyin interfaceCollection<T>- Overrides:
isEmptyin classAbstractCollection<T>
-
peek
-
size
public int size()- Specified by:
sizein interfaceCollection<T>- Specified by:
sizein classAbstractCollection<T>- Returns:
- the size of this heap
-
update
Informs the heap that this object's internal key value has been updated, and that its place in the heap may need to be shifted (up or down).- Parameters:
o- the object whose key value has been updated
-
contains
- Specified by:
containsin interfaceCollection<T>- Overrides:
containsin classAbstractCollection<T>
-
percolateDown
private void percolateDown(int cur) Moves the element at positioncurcloser to the bottom of the heap, or returns if no further motion is necessary. Calls itself recursively if further motion is possible. -
percolateUp
Moves the elementoat positioncuras high as it can go in the heap. Returns the new position of the element in the heap. -
lChild
private int lChild(int i) Returns the index of the left child of the element at indexiof the heap.- Parameters:
i-- Returns:
- the index of the left child of the element at
index
iof the heap
-
rChild
private int rChild(int i) Returns the index of the right child of the element at indexiof the heap.- Parameters:
i-- Returns:
- the index of the right child of the element at
index
iof the heap
-
parent
private int parent(int i) Returns the index of the parent of the element at indexiof the heap.- Parameters:
i-- Returns:
- the index of the parent of the element at index i of the heap
-
swap
private void swap(int i, int j) Swaps the positions of the elements at indicesiandjof the heap.- Parameters:
i-j-
-
iterator
-
remove
This data structure does not support the removal of arbitrary elements.- Specified by:
removein interfaceCollection<T>- Overrides:
removein classAbstractCollection<T>
-
removeAll
This data structure does not support the removal of arbitrary elements.- Specified by:
removeAllin interfaceCollection<T>- Overrides:
removeAllin classAbstractCollection<T>
-
retainAll
This data structure does not support the removal of arbitrary elements.- Specified by:
retainAllin interfaceCollection<T>- Overrides:
retainAllin classAbstractCollection<T>
-
element
- Specified by:
elementin interfaceQueue<T>- Throws:
NoSuchElementException
-
offer
-
poll
-
remove
-