Package org.apache.lucene.util

## Class StableMSBRadixSorter

- java.lang.Object
- - org.apache.lucene.util.Sorter
  - - org.apache.lucene.util.MSBRadixSorter
    - - org.apache.lucene.util.StableMSBRadixSorter

-     public abstract class StableMSBRadixSorter
      extends MSBRadixSorter

  Stable radix sorter for variable-length strings.
  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 | Description
    --- | --- | ---
    `protected static class` | `StableMSBRadixSorter.MergeSorter` | A MergeSorter taking advantage of temporary storage.

  - ### Field Summary

    - ### Fields inherited from class org.apache.lucene.util.MSBRadixSorter

      `HISTOGRAM_SIZE, LENGTH_THRESHOLD, LEVEL_THRESHOLD, maxLength`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `StableMSBRadixSorter​(int maxLength)` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected Sorter` | `getFallbackSorter​(int k)` | Get a fall-back sorter which may assume that the first k bytes of all compared strings are equal.
    `protected void` | `reorder​(int from, int to, int[] startOffsets, int[] endOffsets, int k)` | Reorder elements in stable way, since Dutch sort does not guarantee ordering for same values.
    `protected abstract void` | `restore​(int i, int j)` | Restore values between i-th and j-th(excluding) in temporary storage into original storage.
    `protected abstract void` | `save​(int i, int j)` | Save the i-th value into the j-th position in temporary storage.

    - ### Methods inherited from class org.apache.lucene.util.MSBRadixSorter

      `buildHistogram, byteAt, compare, getBucket, shouldFallback, sort, sort`

    - ### Methods inherited from class org.apache.lucene.util.Sorter

      `comparePivot, setPivot, swap`

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

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

- - ### Constructor Detail

    - #### StableMSBRadixSorter

          public StableMSBRadixSorter​(int maxLength)

  - ### Method Detail

    - #### save

          protected abstract void save​(int i,
                                       int j)

      Save the i-th value into the j-th position in temporary storage.

    - #### restore

          protected abstract void restore​(int i,
                                          int j)

      Restore values between i-th and j-th(excluding) in temporary storage into original storage.

    - #### getFallbackSorter

          protected Sorter getFallbackSorter​(int k)

      Description copied from class: `MSBRadixSorter`
      Get a fall-back sorter which may assume that the first k bytes of all compared strings are equal.
      Overrides:
        `getFallbackSorter` in class `MSBRadixSorter`

    - #### reorder

          protected void reorder​(int from,
                                 int to,
                                 int[] startOffsets,
                                 int[] endOffsets,
                                 int k)

      Reorder elements in stable way, since Dutch sort does not guarantee ordering for same values.

      When this method returns, startOffsets and endOffsets are equal.

      Overrides:
        `reorder` in class `MSBRadixSorter`
        `startOffsets` - start offsets per bucket
        `endOffsets` - end offsets per bucket