Class PriorityBuffer
- All Implemented Interfaces:
Serializable,Iterable,Collection,Buffer
Buffer that provides for
removal based on Comparator ordering.
The removal order of a binary heap is based on either the natural sort
order of its elements or a specified Comparator. The
remove() method always returns the first element as determined
by the sort order. (The ascendingOrder flag in the constructors
can be used to reverse the sort order, in which case remove()
will always remove the last element.) The removal order is
not the same as the order of iteration; elements are
returned by the iterator in no particular order.
The add(Object) and remove() operations perform
in logarithmic time. The get() operation performs in constant
time. All other operations perform in linear time or worse.
Note that this implementation is not synchronized. Use
BufferUtils.synchronizedBuffer(Buffer) or
SynchronizedBuffer.decorate(Buffer)
to provide synchronized access to a PriorityBuffer:
Buffer heap = SynchronizedBuffer.decorate(new PriorityBuffer());
This class is Serializable from Commons Collections 3.2.
- Since:
- Commons Collections 3.0 (previously BinaryHeap v1.0)
- Version:
- $Revision: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
- Author:
- Peter Donald, Ram Chidambaram, Michael A. Smith, Paul Jack, Stephen Colebourne, Steve Phelps
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanIf true, the first element as determined by the sort order will be returned.protected ComparatorThe comparator used to order the elementsprotected Object[]The elements in this buffer.protected intThe number of elements currently in this buffer. -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a new empty buffer that sorts in ascending order by the natural order of the objects added.PriorityBuffer(boolean ascendingOrder) Constructs a new empty buffer specifying the sort order and using the natural order of the objects added.PriorityBuffer(boolean ascendingOrder, Comparator comparator) Constructs a new empty buffer specifying the sort order and comparator.PriorityBuffer(int capacity) Constructs a new empty buffer that sorts in ascending order by the natural order of the objects added, specifying an initial capacity.PriorityBuffer(int capacity, boolean ascendingOrder) Constructs a new empty buffer that specifying initial capacity and sort order, using the natural order of the objects added.PriorityBuffer(int capacity, boolean ascendingOrder, Comparator comparator) Constructs a new empty buffer that specifying initial capacity, sort order and comparator.PriorityBuffer(int capacity, Comparator comparator) Constructs a new empty buffer that sorts in ascending order using the specified comparator and initial capacity.PriorityBuffer(Comparator comparator) Constructs a new empty buffer that sorts in ascending order using the specified comparator. -
Method Summary
Modifier and TypeMethodDescriptionbooleanAdds an element to the buffer.voidclear()Clears all elements from the buffer.Gets the comparator being used for this buffer, null is natural order.protected intCompares two objects using the comparator if specified, or the natural order otherwise.get()Gets the next element to be removed without actually removing it (peek).protected voidgrow()Increases the size of the heap to support additional elementsbooleanChecks whether the heap is ascending or descending order.protected booleanTests if the buffer is at capacity.iterator()Returns an iterator over this heap's elements.protected voidpercolateDownMaxHeap(int index) Percolates element down heap from the position given by the index.protected voidpercolateDownMinHeap(int index) Percolates element down heap from the position given by the index.protected voidpercolateUpMaxHeap(int index) Percolates element up heap from from the position given by the index.protected voidpercolateUpMaxHeap(Object element) Percolates a new element up heap from the bottom.protected voidpercolateUpMinHeap(int index) Percolates element up heap from the position given by the index.protected voidpercolateUpMinHeap(Object element) Percolates a new element up heap from the bottom.remove()Gets and removes the next element (pop).intsize()Returns the number of elements in this buffer.toString()Returns a string representation of this heap.Methods inherited from class java.util.AbstractCollection
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArrayMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Collection
addAll, contains, containsAll, equals, hashCode, isEmpty, parallelStream, remove, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray, toArray
-
Field Details
-
elements
The elements in this buffer. -
size
protected int sizeThe number of elements currently in this buffer. -
ascendingOrder
protected boolean ascendingOrderIf true, the first element as determined by the sort order will be returned. If false, the last element as determined by the sort order will be returned. -
comparator
The comparator used to order the elements
-
-
Constructor Details
-
PriorityBuffer
public PriorityBuffer()Constructs a new empty buffer that sorts in ascending order by the natural order of the objects added. -
PriorityBuffer
Constructs a new empty buffer that sorts in ascending order using the specified comparator.- Parameters:
comparator- the comparator used to order the elements, null means use natural order
-
PriorityBuffer
public PriorityBuffer(boolean ascendingOrder) Constructs a new empty buffer specifying the sort order and using the natural order of the objects added.- Parameters:
ascendingOrder- iftruethe heap is created as a minimum heap; otherwise, the heap is created as a maximum heap
-
PriorityBuffer
Constructs a new empty buffer specifying the sort order and comparator.- Parameters:
ascendingOrder- true to use the order imposed by the given comparator; false to reverse that ordercomparator- the comparator used to order the elements, null means use natural order
-
PriorityBuffer
public PriorityBuffer(int capacity) Constructs a new empty buffer that sorts in ascending order by the natural order of the objects added, specifying an initial capacity.- Parameters:
capacity- the initial capacity for the buffer, greater than zero- Throws:
IllegalArgumentException- ifcapacityis <=0
-
PriorityBuffer
Constructs a new empty buffer that sorts in ascending order using the specified comparator and initial capacity.- Parameters:
capacity- the initial capacity for the buffer, greater than zerocomparator- the comparator used to order the elements, null means use natural order- Throws:
IllegalArgumentException- ifcapacityis <=0
-
PriorityBuffer
public PriorityBuffer(int capacity, boolean ascendingOrder) Constructs a new empty buffer that specifying initial capacity and sort order, using the natural order of the objects added.- Parameters:
capacity- the initial capacity for the buffer, greater than zeroascendingOrder- iftruethe heap is created as a minimum heap; otherwise, the heap is created as a maximum heap.- Throws:
IllegalArgumentException- ifcapacityis<= 0
-
PriorityBuffer
Constructs a new empty buffer that specifying initial capacity, sort order and comparator.- Parameters:
capacity- the initial capacity for the buffer, greater than zeroascendingOrder- true to use the order imposed by the given comparator; false to reverse that ordercomparator- the comparator used to order the elements, null means use natural order- Throws:
IllegalArgumentException- ifcapacityis<= 0
-
-
Method Details
-
isAscendingOrder
public boolean isAscendingOrder()Checks whether the heap is ascending or descending order.- Returns:
- true if ascending order (a min heap)
-
comparator
Gets the comparator being used for this buffer, null is natural order.- Returns:
- the comparator in use, null is natural order
-
size
public int size()Returns the number of elements in this buffer.- Specified by:
sizein interfaceCollection- Specified by:
sizein classAbstractCollection- Returns:
- the number of elements in this buffer
-
clear
public void clear()Clears all elements from the buffer.- Specified by:
clearin interfaceCollection- Overrides:
clearin classAbstractCollection
-
add
Adds an element to the buffer.The element added will be sorted according to the comparator in use.
- Specified by:
addin interfaceCollection- Overrides:
addin classAbstractCollection- Parameters:
element- the element to be added- Returns:
- true always
-
get
Gets the next element to be removed without actually removing it (peek).- Specified by:
getin interfaceBuffer- Returns:
- the next element
- Throws:
BufferUnderflowException- if the buffer is empty
-
remove
Gets and removes the next element (pop).- Specified by:
removein interfaceBuffer- Returns:
- the next element
- Throws:
BufferUnderflowException- if the buffer is empty
-
isAtCapacity
protected boolean isAtCapacity()Tests if the buffer is at capacity.- Returns:
trueif buffer is full;falseotherwise.
-
percolateDownMinHeap
protected void percolateDownMinHeap(int index) Percolates element down heap from the position given by the index.Assumes it is a minimum heap.
- Parameters:
index- the index for the element
-
percolateDownMaxHeap
protected void percolateDownMaxHeap(int index) Percolates element down heap from the position given by the index.Assumes it is a maximum heap.
- Parameters:
index- the index of the element
-
percolateUpMinHeap
protected void percolateUpMinHeap(int index) Percolates element up heap from the position given by the index.Assumes it is a minimum heap.
- Parameters:
index- the index of the element to be percolated up
-
percolateUpMinHeap
Percolates a new element up heap from the bottom.Assumes it is a minimum heap.
- Parameters:
element- the element
-
percolateUpMaxHeap
protected void percolateUpMaxHeap(int index) Percolates element up heap from from the position given by the index.Assume it is a maximum heap.
- Parameters:
index- the index of the element to be percolated up
-
percolateUpMaxHeap
Percolates a new element up heap from the bottom.Assume it is a maximum heap.
- Parameters:
element- the element
-
compare
Compares two objects using the comparator if specified, or the natural order otherwise.- Parameters:
a- the first objectb- the second object- Returns:
- -ve if a less than b, 0 if they are equal, +ve if a greater than b
-
grow
protected void grow()Increases the size of the heap to support additional elements -
iterator
Returns an iterator over this heap's elements.- Specified by:
iteratorin interfaceCollection- Specified by:
iteratorin interfaceIterable- Specified by:
iteratorin classAbstractCollection- Returns:
- an iterator over this heap's elements
-
toString
Returns a string representation of this heap. The returned string is similar to those produced by standard JDK collections.- Overrides:
toStringin classAbstractCollection- Returns:
- a string representation of this heap
-