Class SuffixArray<T>

java.lang.Object
net.minecraft.client.search.SuffixArray<T>

@Environment(CLIENT)
public class SuffixArray<T>
extends Object
Provides an efficient way to search for a text in multiple texts.
  • Field Details

    • LOGGER

      private static final Logger LOGGER
    • objects

      protected final List<T> objects
    • characters

      private final IntList characters
    • textStarts

      private final IntList textStarts
    • suffixIndexToObjectIndex

      private IntList suffixIndexToObjectIndex
    • offsetInText

      private IntList offsetInText
    • maxTextLength

      private int maxTextLength
  • Constructor Details

    • SuffixArray

      public SuffixArray()
  • Method Details

    • add

      public void add​(T object, String text)
      Adds a text with the corresponding object.

      You are not allowed to call this method after calling build() method.

      Takes O(text.length()) time.

    • build

      public void build()
      Builds a suffix array with added texts.

      You are not allowed to call this method multiple times.

      Takes O(N * log N * log M) time on average where N is the sum of all text length added, and M is the maximum text length added.

    • printArray

      private void printArray()
    • getDebugString

      private String getDebugString​(int suffixIndex)
    • compare

      private int compare​(String string, int suffixIndex)
    • findAll

      public List<T> findAll​(String text)
      Retrieves all objects of which corresponding texts contain text.

      You have to call build() method before calling this method.

      Takes O(text.length() * log N) time to find objects where N is the sum of all text length added. Takes O(X + Y * log Y) time to collect found objects into a list where X is the number of occurrences of text in all texts added, and Y is the number of found objects.