org.apache.lucene.util

## Class BytesRefArray

- java.lang.Object
- - org.apache.lucene.util.BytesRefArray

-     public final class BytesRefArray
      extends Object

  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!
  WARNING: This API is experimental and might change in incompatible ways in the next release.
  NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `BytesRefArray.IndexedBytesRefIterator` An extension of `BytesRefIterator` that allows retrieving the index of the current element
    `static class` | `BytesRefArray.SortState` Used to iterate the elements of an array in a given order.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BytesRefArray(Counter bytesUsed)` Creates a new `BytesRefArray` with a counter to track allocated bytes

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `append(BytesRef bytes)` Appends a copy of the given `BytesRef` to this `BytesRefArray`.
    `void` | `clear()` Clears this `BytesRefArray`
    `BytesRef` | `get(BytesRefBuilder spare, int index)` Returns the n'th element of this `BytesRefArray`
    `BytesRefIterator` | `iterator()` sugar for `iterator(Comparator)` with a `null` comparator
    `BytesRefArray.IndexedBytesRefIterator` | `iterator(BytesRefArray.SortState sortState)` Returns an `BytesRefArray.IndexedBytesRefIterator` with point in time semantics.
    `BytesRefIterator` | `iterator(Comparator<BytesRef> comp)` Returns a `BytesRefIterator` with point in time semantics.
    `int` | `size()` Returns the current size of this `BytesRefArray`
    `BytesRefArray.SortState` | `sort(Comparator<BytesRef> comp, IntBinaryOperator tieComparator)` Returns a `BytesRefArray.SortState` representing the order of elements in this array.

    - ### Methods inherited from class java.lang.Object

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

- - ### Constructor Detail

    - #### BytesRefArray

          public BytesRefArray(Counter bytesUsed)

      Creates a new `BytesRefArray` with a counter to track allocated bytes

  - ### Method Detail

    - #### clear

          public void clear()

      Clears this `BytesRefArray`

    - #### append

          public int append(BytesRef bytes)

      Appends a copy of the given `BytesRef` to this `BytesRefArray`.
      Parameters:
        `bytes` - the bytes to append
      Returns:
        the index of the appended bytes

    - #### size

          public int size()

      Returns the current size of this `BytesRefArray`
      Returns:
        the current size of this `BytesRefArray`

    - #### get

          public BytesRef get(BytesRefBuilder spare,
                              int index)

      Returns the n'th element of this `BytesRefArray`
      Parameters:
        `spare` - a spare `BytesRef` instance
        `index` - the elements index to retrieve
      Returns:
        the n'th element of this `BytesRefArray`

    - #### sort

          public BytesRefArray.SortState sort(Comparator<BytesRef> comp,
                                              IntBinaryOperator tieComparator)

      Returns a `BytesRefArray.SortState` representing the order of elements in this array. This is a non-destructive operation.

    - #### iterator

          public BytesRefIterator iterator()

      sugar for `iterator(Comparator)` with a `null` comparator

    - #### iterator

          public BytesRefIterator iterator(Comparator<BytesRef> comp)

      Returns a `BytesRefIterator` with point in time semantics. The iterator provides access to all so far appended `BytesRef` 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.

    - #### iterator

          public BytesRefArray.IndexedBytesRefIterator iterator(BytesRefArray.SortState sortState)

      Returns an `BytesRefArray.IndexedBytesRefIterator` with point in time semantics. The iterator provides access to all so far appended `BytesRef` 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.

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.