java.lang.Object
org.apache.lucene.util.hnsw.BlockingFloatHeap
A blocking bounded min heap that stores floats. The top element is the lowest value of the heap.
A primitive priority queue that maintains a partial ordering of its elements such that the
least element can always be found in constant time. Implementation is based on LongHeap
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final float[]
private final ReentrantLock
private final int
private int
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
downHeap
(int i) float
offer
(float value) Inserts a value into this heap.float
offer
(float[] values, int len) Inserts array of values into this heap.float
peek()
Retrieves, but does not remove, the head of this heap.float
poll()
Removes and returns the head of the heapprivate void
push
(float element) int
size()
Returns the number of elements in this heap.private float
updateTop
(float value) private void
upHeap
(int origPos)
-
Field Details
-
maxSize
private final int maxSize -
heap
private final float[] heap -
lock
-
size
private int size
-
-
Constructor Details
-
BlockingFloatHeap
public BlockingFloatHeap(int maxSize)
-
-
Method Details
-
offer
public float offer(float value) Inserts a value into this heap.If the number of values would exceed the heap's maxSize, the least value is discarded
- Parameters:
value
- the value to add- Returns:
- the new 'top' element in the queue.
-
offer
public float offer(float[] values, int len) Inserts array of values into this heap.Values must be sorted in ascending order.
- Parameters:
values
- a set of values to insert, must be sorted in ascending orderlen
- number of values from thevalues
array to insert- Returns:
- the new 'top' element in the queue.
-
poll
public float poll()Removes and returns the head of the heap- Returns:
- the head of the heap, the smallest value
- Throws:
IllegalStateException
- if the heap is empty
-
peek
public float peek()Retrieves, but does not remove, the head of this heap.- Returns:
- the head of the heap, the smallest value
-
size
public int size()Returns the number of elements in this heap.- Returns:
- the number of elements in this heap
-
push
private void push(float element) -
updateTop
private float updateTop(float value) -
downHeap
private void downHeap(int i) -
upHeap
private void upHeap(int origPos)
-