Class BinaryHeap

java.lang.Object
java.util.AbstractCollection
org.apache.commons.collections.BinaryHeap
All Implemented Interfaces:
Iterable, Collection, Buffer, PriorityQueue

public final class BinaryHeap extends AbstractCollection implements PriorityQueue, Buffer
Deprecated.
Replaced by PriorityBuffer in buffer subpackage. Due to be removed in v4.0.
Binary heap implementation of PriorityQueue.

The PriorityQueue interface has now been replaced for most uses by the Buffer interface. This class and the interface are retained for backwards compatibility. The intended replacement is PriorityBuffer.

The removal order of a binary heap is based on either the natural sort order of its elements or a specified Comparator. The pop() method always returns the first element as determined by the sort order. (The isMinHeap flag in the constructors can be used to reverse the sort order, in which case pop() 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 insert(Object) and pop() operations perform in logarithmic time. The peek() operation performs in constant time. All other operations perform in linear time or worse.

Note that this implementation is not synchronized. Use SynchronizedPriorityQueue to provide synchronized access to a BinaryHeap:

 PriorityQueue heap = new SynchronizedPriorityQueue(new BinaryHeap());
 
Since:
Commons Collections 1.0
Version:
$Revision: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final int
    Deprecated.
    The default capacity for a binary heap.
    (package private) Comparator
    Deprecated.
    The comparator used to order the elements
    (package private) Object[]
    Deprecated.
    The elements in this heap.
    (package private) boolean
    Deprecated.
    If true, the first element as determined by the sort order will be returned.
    (package private) int
    Deprecated.
    The number of elements currently in this heap.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Deprecated.
    Constructs a new minimum binary heap.
    BinaryHeap(boolean isMinHeap)
    Deprecated.
    Constructs a new minimum or maximum binary heap
    BinaryHeap(boolean isMinHeap, Comparator comparator)
    Deprecated.
    Constructs a new BinaryHeap.
    BinaryHeap(int capacity)
    Deprecated.
    Constructs a new minimum binary heap with the specified initial capacity.
    BinaryHeap(int capacity, boolean isMinHeap)
    Deprecated.
    Constructs a new minimum or maximum binary heap with the specified initial capacity.
    BinaryHeap(int capacity, boolean isMinHeap, Comparator comparator)
    Deprecated.
    Constructs a new BinaryHeap.
    BinaryHeap(int capacity, Comparator comparator)
    Deprecated.
    Constructs a new BinaryHeap.
    BinaryHeap(Comparator comparator)
    Deprecated.
    Constructs a new BinaryHeap that will use the given comparator to order its elements.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    add(Object object)
    Deprecated.
    Adds an object to this heap.
    void
    Deprecated.
    Clears all elements from queue.
    private int
    Deprecated.
    Compares two objects using the comparator if specified, or the natural order otherwise.
    get()
    Deprecated.
    Returns the priority element.
    protected void
    Deprecated.
    Increases the size of the heap to support additional elements
    void
    insert(Object element)
    Deprecated.
    Inserts an element into queue.
    boolean
    Deprecated.
    Tests if queue is empty.
    boolean
    Deprecated.
    Tests if queue is full.
    Deprecated.
    Returns an iterator over this heap's elements.
    Deprecated.
    Returns the element on top of heap but don't remove it.
    protected void
    Deprecated.
    Percolates element down heap from the position given by the index.
    protected void
    Deprecated.
    Percolates element down heap from the position given by the index.
    protected void
    percolateUpMaxHeap(int index)
    Deprecated.
    Percolates element up heap from from the position given by the index.
    protected void
    Deprecated.
    Percolates a new element up heap from the bottom.
    protected void
    percolateUpMinHeap(int index)
    Deprecated.
    Percolates element up heap from the position given by the index.
    protected void
    Deprecated.
    Percolates a new element up heap from the bottom.
    pop()
    Deprecated.
    Returns the element on top of heap and remove it.
    Deprecated.
    Removes the priority element.
    int
    Deprecated.
    Returns the number of elements in this heap.
    Deprecated.
    Returns a string representation of this heap.

    Methods inherited from class java.util.AbstractCollection

    addAll, contains, containsAll, remove, removeAll, retainAll, toArray, toArray

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface java.lang.Iterable

    forEach
  • Field Details

    • DEFAULT_CAPACITY

      private static final int DEFAULT_CAPACITY
      Deprecated.
      The default capacity for a binary heap.
      See Also:
    • m_size

      int m_size
      Deprecated.
      The number of elements currently in this heap.
    • m_elements

      Object[] m_elements
      Deprecated.
      The elements in this heap.
    • m_isMinHeap

      boolean m_isMinHeap
      Deprecated.
      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.
    • m_comparator

      Comparator m_comparator
      Deprecated.
      The comparator used to order the elements
  • Constructor Details

    • BinaryHeap

      public BinaryHeap()
      Deprecated.
      Constructs a new minimum binary heap.
    • BinaryHeap

      public BinaryHeap(Comparator comparator)
      Deprecated.
      Constructs a new BinaryHeap that will use the given comparator to order its elements.
      Parameters:
      comparator - the comparator used to order the elements, null means use natural order
    • BinaryHeap

      public BinaryHeap(int capacity)
      Deprecated.
      Constructs a new minimum binary heap with the specified initial capacity.
      Parameters:
      capacity - The initial capacity for the heap. This value must be greater than zero.
      Throws:
      IllegalArgumentException - if capacity is <= 0
    • BinaryHeap

      public BinaryHeap(int capacity, Comparator comparator)
      Deprecated.
      Constructs a new BinaryHeap.
      Parameters:
      capacity - the initial capacity for the heap
      comparator - the comparator used to order the elements, null means use natural order
      Throws:
      IllegalArgumentException - if capacity is <= 0
    • BinaryHeap

      public BinaryHeap(boolean isMinHeap)
      Deprecated.
      Constructs a new minimum or maximum binary heap
      Parameters:
      isMinHeap - if true the heap is created as a minimum heap; otherwise, the heap is created as a maximum heap
    • BinaryHeap

      public BinaryHeap(boolean isMinHeap, Comparator comparator)
      Deprecated.
      Constructs a new BinaryHeap.
      Parameters:
      isMinHeap - true to use the order imposed by the given comparator; false to reverse that order
      comparator - the comparator used to order the elements, null means use natural order
    • BinaryHeap

      public BinaryHeap(int capacity, boolean isMinHeap)
      Deprecated.
      Constructs a new minimum or maximum binary heap with the specified initial capacity.
      Parameters:
      capacity - the initial capacity for the heap. This value must be greater than zero.
      isMinHeap - if true the heap is created as a minimum heap; otherwise, the heap is created as a maximum heap.
      Throws:
      IllegalArgumentException - if capacity is <= 0
    • BinaryHeap

      public BinaryHeap(int capacity, boolean isMinHeap, Comparator comparator)
      Deprecated.
      Constructs a new BinaryHeap.
      Parameters:
      capacity - the initial capacity for the heap
      isMinHeap - true to use the order imposed by the given comparator; false to reverse that order
      comparator - the comparator used to order the elements, null means use natural order
      Throws:
      IllegalArgumentException - if capacity is <= 0
  • Method Details

    • clear

      public void clear()
      Deprecated.
      Clears all elements from queue.
      Specified by:
      clear in interface Collection
      Specified by:
      clear in interface PriorityQueue
      Overrides:
      clear in class AbstractCollection
    • isEmpty

      public boolean isEmpty()
      Deprecated.
      Tests if queue is empty.
      Specified by:
      isEmpty in interface Collection
      Specified by:
      isEmpty in interface PriorityQueue
      Overrides:
      isEmpty in class AbstractCollection
      Returns:
      true if queue is empty; false otherwise.
    • isFull

      public boolean isFull()
      Deprecated.
      Tests if queue is full.
      Returns:
      true if queue is full; false otherwise.
    • insert

      public void insert(Object element)
      Deprecated.
      Inserts an element into queue.
      Specified by:
      insert in interface PriorityQueue
      Parameters:
      element - the element to be inserted
    • peek

      public Object peek() throws NoSuchElementException
      Deprecated.
      Returns the element on top of heap but don't remove it.
      Specified by:
      peek in interface PriorityQueue
      Returns:
      the element at top of heap
      Throws:
      NoSuchElementException - if isEmpty() == true
    • pop

      public Object pop() throws NoSuchElementException
      Deprecated.
      Returns the element on top of heap and remove it.
      Specified by:
      pop in interface PriorityQueue
      Returns:
      the element at top of heap
      Throws:
      NoSuchElementException - if isEmpty() == true
    • percolateDownMinHeap

      protected void percolateDownMinHeap(int index)
      Deprecated.
      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)
      Deprecated.
      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)
      Deprecated.
      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

      protected void percolateUpMinHeap(Object element)
      Deprecated.
      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)
      Deprecated.
      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

      protected void percolateUpMaxHeap(Object element)
      Deprecated.
      Percolates a new element up heap from the bottom.

      Assume it is a maximum heap.

      Parameters:
      element - the element
    • compare

      private int compare(Object a, Object b)
      Deprecated.
      Compares two objects using the comparator if specified, or the natural order otherwise.
      Parameters:
      a - the first object
      b - 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()
      Deprecated.
      Increases the size of the heap to support additional elements
    • toString

      public String toString()
      Deprecated.
      Returns a string representation of this heap. The returned string is similar to those produced by standard JDK collections.
      Overrides:
      toString in class AbstractCollection
      Returns:
      a string representation of this heap
    • iterator

      public Iterator iterator()
      Deprecated.
      Returns an iterator over this heap's elements.
      Specified by:
      iterator in interface Collection
      Specified by:
      iterator in interface Iterable
      Specified by:
      iterator in class AbstractCollection
      Returns:
      an iterator over this heap's elements
    • add

      public boolean add(Object object)
      Deprecated.
      Adds an object to this heap. Same as insert(Object).
      Specified by:
      add in interface Collection
      Overrides:
      add in class AbstractCollection
      Parameters:
      object - the object to add
      Returns:
      true, always
    • get

      public Object get()
      Deprecated.
      Returns the priority element. Same as peek().
      Specified by:
      get in interface Buffer
      Returns:
      the priority element
      Throws:
      BufferUnderflowException - if this heap is empty
    • remove

      public Object remove()
      Deprecated.
      Removes the priority element. Same as pop().
      Specified by:
      remove in interface Buffer
      Returns:
      the removed priority element
      Throws:
      BufferUnderflowException - if this heap is empty
    • size

      public int size()
      Deprecated.
      Returns the number of elements in this heap.
      Specified by:
      size in interface Collection
      Specified by:
      size in class AbstractCollection
      Returns:
      the number of elements in this heap