Class LiterallySignedStringMap

java.lang.Object
it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction<CharSequence>
it.unimi.dsi.big.util.LiterallySignedStringMap
All Implemented Interfaces:
StringMap<MutableString>, it.unimi.dsi.fastutil.Function<CharSequence,Long>, it.unimi.dsi.fastutil.objects.Object2LongFunction<CharSequence>, it.unimi.dsi.fastutil.Size64, Serializable, Function<CharSequence,Long>, ToLongFunction<CharSequence>

public class LiterallySignedStringMap extends it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction<CharSequence> implements StringMap<MutableString>, Serializable, it.unimi.dsi.fastutil.Size64
A string map based on a function signed using the original list of strings.

A minimal perfect hash function maps a set of string to an initial segment of the natural numbers, but will actually map any string to that segment. We can check that a string is part of the key set by hashing it to a value h, and checking that the h-th string of the original list does coincide. Since, moreover, this class implements StringMap, and thus exposes the original list, we have a two-way dictionary. In other words, this is a full StringMap implementation.

Note that some care must be exercised: CharSequence's contract does not prescribe equality by content, so if your function behaves badly on some implementations of CharSequence you might make the checks fail. To avoid difficulties, the constructor checks that every string in the list is hashed correctly.

For the same reason, this class implements StringMap<MutableString>, and requires that the list of strings provided at construction time is actually a list of mutable strings.

Since:
2.0
Author:
Sebastiano Vigna
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final it.unimi.dsi.fastutil.objects.Object2LongFunction<? extends CharSequence>
    The underlying map.
    protected final it.unimi.dsi.fastutil.objects.ObjectBigList<? extends MutableString>
    The underlying list.
    protected final long
    The size of list.

    Fields inherited from class it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction

    defRetValue
  • Constructor Summary

    Constructors
    Constructor
    Description
    LiterallySignedStringMap(it.unimi.dsi.fastutil.objects.Object2LongFunction<? extends CharSequence> function, it.unimi.dsi.fastutil.objects.ObjectBigList<? extends MutableString> list)
    Creates a new shift-add-xor signed string map using a given hash map.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
     
    Deprecated.
    long
     
    it.unimi.dsi.fastutil.objects.ObjectBigList<? extends MutableString>
    Returns a list view of the domain of this string map (optional operation).
    static void
    main(String[] arg)
     
    int
    Deprecated.
    long
    Returns the intended number of keys in this function, or -1 if no such number exists.

    Methods inherited from class it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction

    defaultReturnValue, defaultReturnValue

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface it.unimi.dsi.fastutil.Function

    apply, clear

    Methods inherited from interface java.util.function.Function

    compose

    Methods inherited from interface it.unimi.dsi.fastutil.objects.Object2LongFunction

    andThen, andThenByte, andThenChar, andThenDouble, andThenFloat, andThenInt, andThenLong, andThenObject, andThenReference, andThenShort, applyAsLong, composeByte, composeChar, composeDouble, composeFloat, composeInt, composeLong, composeObject, composeReference, composeShort, defaultReturnValue, defaultReturnValue, getOrDefault, getOrDefault, put, put, remove, removeLong
  • Field Details

    • function

      protected final it.unimi.dsi.fastutil.objects.Object2LongFunction<? extends CharSequence> function
      The underlying map.
    • list

      protected final it.unimi.dsi.fastutil.objects.ObjectBigList<? extends MutableString> list
      The underlying list.
    • size

      protected final long size
      The size of list.
  • Constructor Details

    • LiterallySignedStringMap

      public LiterallySignedStringMap(it.unimi.dsi.fastutil.objects.Object2LongFunction<? extends CharSequence> function, it.unimi.dsi.fastutil.objects.ObjectBigList<? extends MutableString> list)
      Creates a new shift-add-xor signed string map using a given hash map.
      Parameters:
      function - a function mapping each string in list to its ordinal position.
      list - a list of strings.
  • Method Details

    • getLong

      public long getLong(Object o)
      Specified by:
      getLong in interface it.unimi.dsi.fastutil.objects.Object2LongFunction<CharSequence>
    • get

      @Deprecated public Long get(Object o)
      Deprecated.
      Specified by:
      get in interface it.unimi.dsi.fastutil.Function<CharSequence,Long>
      Specified by:
      get in interface it.unimi.dsi.fastutil.objects.Object2LongFunction<CharSequence>
    • size64

      public long size64()
      Description copied from interface: StringMap
      Returns the intended number of keys in this function, or -1 if no such number exists.

      Most function implementations will have some knowledge of the intended number of keys in their domain. In some cases, however, this might not be possible. This default implementation, in particular, returns -1.

      Specified by:
      size64 in interface it.unimi.dsi.fastutil.Size64
      Specified by:
      size64 in interface StringMap<MutableString>
      Returns:
      the intended number of keys in this function, or -1 if that number is not available.
    • size

      @Deprecated public int size()
      Deprecated.
      Description copied from interface: StringMap
      Specified by:
      size in interface it.unimi.dsi.fastutil.Function<CharSequence,Long>
      Specified by:
      size in interface it.unimi.dsi.fastutil.Size64
      Specified by:
      size in interface StringMap<MutableString>
    • containsKey

      public boolean containsKey(Object o)
      Specified by:
      containsKey in interface it.unimi.dsi.fastutil.Function<CharSequence,Long>
    • list

      public it.unimi.dsi.fastutil.objects.ObjectBigList<? extends MutableString> list()
      Description copied from interface: StringMap
      Returns a list view of the domain of this string map (optional operation).

      Note that the list view acts as an inverse of the mapping implemented by this map.

      Specified by:
      list in interface StringMap<MutableString>
      Returns:
      a list view of the domain of this string map, or null if this map does not support this operation.
    • main

      public static void main(String[] arg) throws IOException, com.martiansoftware.jsap.JSAPException, ClassNotFoundException, SecurityException, NoSuchMethodException
      Throws:
      IOException
      com.martiansoftware.jsap.JSAPException
      ClassNotFoundException
      SecurityException
      NoSuchMethodException