Package org.apache.lucene.util
Class BytesRefArray
java.lang.Object
org.apache.lucene.util.BytesRefArray
- All Implemented Interfaces:
SortableBytesRefArray
A simple append only random-access
BytesRef
array that stores full copies of the appended
bytes in a ByteBlockPool
.
Note: This class is not Thread-Safe!
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
An extension ofBytesRefIterator
that allows retrieving the index of the current elementstatic final class
Used to iterate the elements of an array in a given order. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Counter
private int
private int
private int[]
private final ByteBlockPool
-
Constructor Summary
ConstructorsConstructorDescriptionBytesRefArray
(Counter bytesUsed) Creates a newBytesRefArray
with a counter to track allocated bytes -
Method Summary
Modifier and TypeMethodDescriptionint
Appends a copy of the givenBytesRef
to thisBytesRefArray
.void
clear()
Clears thisBytesRefArray
get
(BytesRefBuilder spare, int index) Returns the n'th element of thisBytesRefArray
iterator()
sugar foriterator(Comparator)
with anull
comparatoriterator
(Comparator<BytesRef> comp) Returns aBytesRefIterator
with point in time semantics.iterator
(BytesRefArray.SortState sortState) Returns anBytesRefArray.IndexedBytesRefIterator
with point in time semantics.private void
setBytesRef
(BytesRefBuilder spare, BytesRef result, int index) Used only by sort below, to set aBytesRef
with the specified slice, avoiding copying bytes in the common case when the slice is contained in a single block in the byte block pool.int
size()
Returns the current size of thisBytesRefArray
sort
(Comparator<BytesRef> comp, IntBinaryOperator tieComparator) Returns aBytesRefArray.SortState
representing the order of elements in this array.
-
Field Details
-
pool
-
offsets
private int[] offsets -
lastElement
private int lastElement -
currentOffset
private int currentOffset -
bytesUsed
-
-
Constructor Details
-
BytesRefArray
Creates a newBytesRefArray
with a counter to track allocated bytes
-
-
Method Details
-
clear
public void clear()Clears thisBytesRefArray
- Specified by:
clear
in interfaceSortableBytesRefArray
-
append
Appends a copy of the givenBytesRef
to thisBytesRefArray
.- Specified by:
append
in interfaceSortableBytesRefArray
- Parameters:
bytes
- the bytes to append- Returns:
- the index of the appended bytes
-
size
public int size()Returns the current size of thisBytesRefArray
- Specified by:
size
in interfaceSortableBytesRefArray
- Returns:
- the current size of this
BytesRefArray
-
get
Returns the n'th element of thisBytesRefArray
- Parameters:
spare
- a spareBytesRef
instanceindex
- the elements index to retrieve- Returns:
- the n'th element of this
BytesRefArray
-
setBytesRef
Used only by sort below, to set aBytesRef
with the specified slice, avoiding copying bytes in the common case when the slice is contained in a single block in the byte block pool. -
sort
Returns aBytesRefArray.SortState
representing the order of elements in this array. This is a non-destructive operation. -
iterator
sugar foriterator(Comparator)
with anull
comparator -
iterator
Returns aBytesRefIterator
with point in time semantics. The iterator provides access to all so far appendedBytesRef
instances.If a non
null
Comparator
is provided the iterator will iterate the byte values in the order specified by the comparator. Otherwise the order is the same as the values were appended.This is a non-destructive operation.
- Specified by:
iterator
in interfaceSortableBytesRefArray
-
iterator
Returns anBytesRefArray.IndexedBytesRefIterator
with point in time semantics. The iterator provides access to all so far appendedBytesRef
instances. If a non-null sortState is specified then the iterator will iterate the byte values in the order of the sortState; otherwise, the order is the same as the values were appended.
-