Class MWHCFunction.Builder<T>

java.lang.Object
it.unimi.dsi.sux4j.mph.MWHCFunction.Builder<T>
Enclosing class:
MWHCFunction<T>

public static class MWHCFunction.Builder<T> extends Object
A builder class for MWHCFunction.
  • Field Details

    • keys

      protected Iterable<? extends T> keys
    • transform

      protected TransformationStrategy<? super T> transform
    • signatureWidth

      protected int signatureWidth
    • tempDir

      protected File tempDir
    • chunkedHashStore

      protected ChunkedHashStore<T> chunkedHashStore
    • values

      protected LongIterable values
    • outputWidth

      protected int outputWidth
    • indirect

      protected boolean indirect
    • built

      protected boolean built
      Whether build() has already been called.
  • Constructor Details

    • Builder

      public Builder()
  • Method Details

    • keys

      public MWHCFunction.Builder<T> keys(Iterable<? extends T> keys)
      Specifies the keys of the function; if you have specified a it.unimi.dsi.sux4j.io.ChunkedHashStore, it can be null.
      Parameters:
      keys - the keys of the function.
      Returns:
      this builder.
    • transform

      public MWHCFunction.Builder<T> transform(TransformationStrategy<? super T> transform)
      Specifies the transformation strategy for the keys of the function.
      Parameters:
      transform - a transformation strategy for the keys of the function.
      Returns:
      this builder.
    • signed

      public MWHCFunction.Builder<T> signed(int signatureWidth)
      Specifies that the resulting MWHCFunction should be signed using a given number of bits per element; in this case, you cannot specify values.
      Parameters:
      signatureWidth - a signature width, or 0 for no signature (a negative value will have the same effect of dictionary(int) with the opposite argument).
      Returns:
      this builder.
    • dictionary

      public MWHCFunction.Builder<T> dictionary(int signatureWidth)
      Specifies that the resulting MWHCFunction should be an approximate dictionary: the output value will be a signature, and MWHCFunction.getLong(Object) will return 1 or 0 depending on whether the argument was in the key set or not; in this case, you cannot specify values.

      Note that checking against a signature has the usual probability of a false positive.

      Parameters:
      signatureWidth - a signature width, or 0 for no signature (a negative value will have the same effect of signed(int) with the opposite argument).
      Returns:
      this builder.
    • tempDir

      public MWHCFunction.Builder<T> tempDir(File tempDir)
      Specifies a temporary directory for the it.unimi.dsi.sux4j.io.ChunkedHashStore.
      Parameters:
      tempDir - a temporary directory for the it.unimi.dsi.sux4j.io.ChunkedHashStore files, or null for the standard temporary directory.
      Returns:
      this builder.
    • store

      public MWHCFunction.Builder<T> store(ChunkedHashStore<T> chunkedHashStore)
      Specifies a chunked hash store containing the keys.

      Note that if you specify a store, it is your responsibility that it conforms to the rest of the data: it must contain ranks if you do not specify values or if you use the indirect feature, values otherwise.

      Parameters:
      chunkedHashStore - a chunked hash store containing the keys, or null; the store can be unchecked, but in this case you must specify keys and a transform (otherwise, in case of a hash collision in the store an IllegalStateException will be thrown).
      Returns:
      this builder.
    • values

      public MWHCFunction.Builder<T> values(LongIterable values, int outputWidth)
      Specifies the values assigned to the keys.

      Contrarily to values(LongIterable), this method does not require a complete scan of the value to determine the output width.

      Parameters:
      values - values to be assigned to each element, in the same order of the keys.
      outputWidth - the bit width of the output of the function, which must be enough to represent all values.
      Returns:
      this builder.
      See Also:
    • values

      public MWHCFunction.Builder<T> values(LongIterable values)
      Specifies the values assigned to the keys; the output width of the function will be the minimum width needed to represent all values.

      Contrarily to values(LongIterable, int), this method requires a complete scan of the value to determine the output width.

      Parameters:
      values - values to be assigned to each element, in the same order of the keys.
      Returns:
      this builder.
      See Also:
    • indirect

      public MWHCFunction.Builder<T> indirect()
      Specifies that the function construction must be indirect: a provided store contains indices that must be used to access the values.

      If you specify this option, the provided values must be a LongList or a LongBigList.

      Returns:
      this builder.
    • build

      public MWHCFunction<T> build() throws IOException
      Builds a new function.
      Returns:
      an MWHCFunction instance with the specified parameters.
      Throws:
      IllegalStateException - if called more than once.
      IOException