## org.apache.lucene.facet.search
Interface Heap<T>

    public interface Heap<T>

Declares an interface for heap (and heap alike) structures, handling a given type T

WARNING: This API is experimental and might change in incompatible ways in the next release.

Method Summary
`T` `add(T frn)` Add a new value to the heap, return the new top().
`void` `clear()` Clear the heap
`T` `insertWithOverflow(T value)` Insert a new value, returning the overflowen object NOTE: This method should not be called after invoking `pop()`
`T` `pop()` Get and remove the top of the Heap NOTE: Once `pop()` is called no other `add(Object)` or `insertWithOverflow(Object)` should be called.
`int` `size()` Return the amount of objects currently in the heap
`T` `top()` Get (But not remove) the top of the Heap

Method Detail

### pop

    T pop()

  Get and remove the top of the Heap
  NOTE: Once `pop()` is called no other `add(Object)` or `insertWithOverflow(Object)` should be called.

### top

    T top()

  Get (But not remove) the top of the Heap

### insertWithOverflow

    T insertWithOverflow(T value)

  Insert a new value, returning the overflowen object
  NOTE: This method should not be called after invoking `pop()`

### add

    T add(T frn)

  Add a new value to the heap, return the new top().
  Some implementations may choose to not implement this functionality. In such a case `null` should be returned.
  NOTE: This method should not be called after invoking `pop()`

### clear

    void clear()

  Clear the heap

### size

    int size()

  Return the amount of objects currently in the heap