org.apache.commons.collections.buffer
Class PriorityBuffer
AbstractCollection
org.apache.commons.collections.buffer.PriorityBuffer
- Buffer, Collection
public class PriorityBuffer
extends AbstractCollection
Binary heap implementation of
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());
$Revision: 1.5 $ $Date: 2004/05/15 12:33:23 $- Peter Donald
- Ram Chidambaram
- Michael A. Smith
- Paul Jack
- Stephen Colebourne
- Commons Collections 3.0 (previously BinaryHeap v1.0)
protected boolean | ascendingOrder - If true, the first element as determined by the sort order will
be returned.
|
protected Comparator | comparator - The comparator used to order the elements
|
protected Object[] | elements - The elements in this buffer.
|
protected int | size - The number of elements currently in this buffer.
|
PriorityBuffer() - Constructs a new empty buffer that sorts in ascending order by the
natural order of the objects added.
|
PriorityBuffer(Comparator comparator) - Constructs a new empty buffer that sorts in ascending order using the
specified comparator.
|
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, Comparator comparator) - Constructs a new empty buffer that sorts in ascending order using the
specified comparator and 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.
|
boolean | add(Object element) - Adds an element to the buffer.
|
void | clear() - Clears all elements from the buffer.
|
Comparator | comparator() - Gets the comparator being used for this buffer, null is natural order.
|
protected int | compare(Object a, Object b) - Compares two objects using the comparator if specified, or the
natural order otherwise.
|
Object | get() - Gets the next element to be removed without actually removing it (peek).
|
protected void | grow() - Increases the size of the heap to support additional elements
|
boolean | isAscendingOrder() - Checks whether the heap is ascending or descending order.
|
protected boolean | isAtCapacity() - Tests if the buffer is at capacity.
|
Iterator | iterator() - Returns an iterator over this heap's elements.
|
protected void | percolateDownMaxHeap(int index) - Percolates element down heap from the position given by the index.
|
protected void | percolateDownMinHeap(int index) - Percolates element down heap from the position given by the index.
|
protected void | percolateUpMaxHeap(Object element) - Percolates a new element up heap from the bottom.
|
protected void | percolateUpMaxHeap(int index) - Percolates element up heap from from the position given by the index.
|
protected void | percolateUpMinHeap(Object element) - Percolates a new element up heap from the bottom.
|
protected void | percolateUpMinHeap(int index) - Percolates element up heap from the position given by the index.
|
Object | remove() - Gets and removes the next element (pop).
|
int | size() - Returns the number of elements in this buffer.
|
String | toString() - Returns a string representation of this heap.
|
ascendingOrder
protected boolean ascendingOrder
If 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
protected Comparator comparator
The comparator used to order the elements
elements
protected Object[] elements
The elements in this buffer.
size
protected int size
The number of elements currently in this buffer.
PriorityBuffer
public PriorityBuffer()
Constructs a new empty buffer that sorts in ascending order by the
natural order of the objects added.
PriorityBuffer
public PriorityBuffer(Comparator comparator)
Constructs a new empty buffer that sorts in ascending order using the
specified comparator.
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.
ascendingOrder
- if true
the heap is created as a
minimum heap; otherwise, the heap is created as a maximum heap
PriorityBuffer
public PriorityBuffer(boolean ascendingOrder,
Comparator comparator)
Constructs a new empty buffer specifying the sort order and comparator.
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.
capacity
- the initial capacity for the buffer, greater than zero
PriorityBuffer
public PriorityBuffer(int capacity,
Comparator comparator)
Constructs a new empty buffer that sorts in ascending order using the
specified comparator and initial capacity.
capacity
- the initial capacity for the buffer, greater than zerocomparator
- the comparator used to order the elements,
null means use natural order
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.
capacity
- the initial capacity for the buffer, greater than zeroascendingOrder
- if true
the heap is created as a
minimum heap; otherwise, the heap is created as a maximum heap.
PriorityBuffer
public PriorityBuffer(int capacity,
boolean ascendingOrder,
Comparator comparator)
Constructs a new empty buffer that specifying initial capacity,
sort order and comparator.
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
add
public boolean add(Object element)
Adds an element to the buffer.
The element added will be sorted according to the comparator in use.
element
- the element to be added
clear
public void clear()
Clears all elements from the buffer.
comparator
public Comparator comparator()
Gets the comparator being used for this buffer, null is natural order.
- the comparator in use, null is natural order
compare
protected int compare(Object a,
Object b)
Compares two objects using the comparator if specified, or the
natural order otherwise.
a
- the first objectb
- the second object
- -ve if a less than b, 0 if they are equal, +ve if a greater than b
get
public Object get()
Gets the next element to be removed without actually removing it (peek).
- get in interface Buffer
grow
protected void grow()
Increases the size of the heap to support additional elements
isAscendingOrder
public boolean isAscendingOrder()
Checks whether the heap is ascending or descending order.
- true if ascending order (a min heap)
isAtCapacity
protected boolean isAtCapacity()
Tests if the buffer is at capacity.
true
if buffer is full; false
otherwise.
iterator
public Iterator iterator()
Returns an iterator over this heap's elements.
- an iterator over this heap's elements
percolateDownMaxHeap
protected void percolateDownMaxHeap(int index)
Percolates element down heap from the position given by the index.
Assumes it is a maximum heap.
index
- the index of the element
percolateDownMinHeap
protected void percolateDownMinHeap(int index)
Percolates element down heap from the position given by the index.
Assumes it is a minimum heap.
index
- the index for the element
percolateUpMaxHeap
protected void percolateUpMaxHeap(Object element)
Percolates a new element up heap from the bottom.
Assume it is a maximum heap.
percolateUpMaxHeap
protected void percolateUpMaxHeap(int index)
Percolates element up heap from from the position given by the index.
Assume it is a maximum heap.
index
- the index of the element to be percolated up
percolateUpMinHeap
protected void percolateUpMinHeap(Object element)
Percolates a new element up heap from the bottom.
Assumes it is a minimum heap.
percolateUpMinHeap
protected void percolateUpMinHeap(int index)
Percolates element up heap from the position given by the index.
Assumes it is a minimum heap.
index
- the index of the element to be percolated up
remove
public Object remove()
Gets and removes the next element (pop).
- remove in interface Buffer
size
public int size()
Returns the number of elements in this buffer.
- the number of elements in this buffer
toString
public String toString()
Returns a string representation of this heap. The returned string
is similar to those produced by standard JDK collections.
- a string representation of this heap
Copyright © 2001-2006 Apache Software Foundation. All Rights Reserved.