Module org.hsqldb
Package org.hsqldb.lib

## Interface HsqlHeap<E>

- All Known Implementing Classes:
    `HsqlArrayHeap`

      public interface HsqlHeap<E>

  Provides the HyperSQL interface for Heap ADT implementations.

  In this context, a Heap is simply a collection-like ADT that allows addition of elements and provides a way to remove the least element, given some implementation-dependent strategy for imposing an order over its elements.

  Typically, an HsqlHeap will be implemented as a tree-like structure that recursively guarantees a Heap Invariant, such that all nodes below the root are greater than the root, given some comparison strategy.

  This in turn provides the basis for an efficient implementation of ADTs such PriorityQueue, since Heap operations using the typical implementation are, in theory, guaranteed to be O(log n).

  This interface represents a pure queue with the same basic queue methods as `java.util.Queue` but without all the extra methods.

  Since:
    1.7.2
  Author:
    Campbell Burnet (campbell-burnet@users dot sourceforge.net)

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `add​(E o)` | Adds the specified element to this Heap.
    `void` | `clear()` | Removes all of the elements from this Heap.
    `boolean` | `isEmpty()` | Retrieves whether this Heap is empty.
    `boolean` | `isFull()` | Retrieves whether this Heap is full.
    `E` | `peek()` | Retrieves the least element from this Heap, without removing it.
    `E` | `remove()` | Retrieves the least element from this Heap, removing it in the process.
    `int` | `size()` | Retrieves the number of elements currently in this Heap.

- - ### Method Detail

    - #### clear

          void clear()

      Removes all of the elements from this Heap.

    - #### isEmpty

          boolean isEmpty()

      Retrieves whether this Heap is empty.
      Returns:
        boolean

    - #### isFull

          boolean isFull()

      Retrieves whether this Heap is full.
      Returns:
        boolean

    - #### add

          boolean add​(E o)

      Adds the specified element to this Heap.
      Parameters:
        `o` - The element to add
      Returns:
        boolean
      Throws:
        `java.lang.IllegalArgumentException` - if the implementation does not accept elements of the supplied type (optional)
        `java.lang.RuntimeException` - if the implementation dictates that this Heap is not currently accepting additions or that this Heap is currently full (optional)

    - #### peek

          E peek()

      Retrieves the least element from this Heap, without removing it.
      Returns:
        the least element from this Heap

    - #### remove

          E remove()

      Retrieves the least element from this Heap, removing it in the process.
      Returns:
        the least element from this Heap

    - #### size

          int size()

      Retrieves the number of elements currently in this Heap.
      Returns:
        the number of elements currently in this Heap