it.unimi.dsi.util
Class LiterallySignedStringMap

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

public class LiterallySignedStringMap
extends AbstractObject2LongFunction<CharSequence>
implements StringMap<MutableString>, Serializable

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.

A typical usage of this class pairs a FrontCodedStringList with some kind of succinct structure from Sux4J.

Since:
1.0.8
Author:
Sebastiano Vigna
See Also:
Serialized Form

Field Summary
protected  Object2LongFunction<? extends CharSequence> function
          The underlying map.
protected  ObjectList<? extends MutableString> list
          The underlying list.
protected  int size
          The size of list.
 
Fields inherited from class it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction
defRetValue
 
Constructor Summary
LiterallySignedStringMap(Object2LongFunction<? extends CharSequence> function, ObjectList<? extends MutableString> list)
          Creates a new shift-add-xor signed string map using a given hash map.
 
Method Summary
 boolean containsKey(Object o)
           
 Long get(Object o)
           
 long getLong(Object o)
           
 ObjectList<? extends MutableString> list()
          Returns a list view of the domain of this string map (optional operation).
static void main(String[] arg)
           
 int size()
           
 
Methods inherited from class it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction
clear, defaultReturnValue, defaultReturnValue, put, put, remove, removeLong
 
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.objects.Object2LongFunction
defaultReturnValue, defaultReturnValue, put, removeLong
 
Methods inherited from interface it.unimi.dsi.fastutil.Function
clear, put, remove
 

Field Detail

function

protected final Object2LongFunction<? extends CharSequence> function
The underlying map.


list

protected final ObjectList<? extends MutableString> list
The underlying list.


size

protected final int size
The size of list.

Constructor Detail

LiterallySignedStringMap

public LiterallySignedStringMap(Object2LongFunction<? extends CharSequence> function,
                                ObjectList<? 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 Detail

getLong

public long getLong(Object o)
Specified by:
getLong in interface Object2LongFunction<CharSequence>

get

public Long get(Object o)
Specified by:
get in interface Function<CharSequence,Long>
Overrides:
get in class AbstractObject2LongFunction<CharSequence>

size

public int size()
Specified by:
size in interface Function<CharSequence,Long>

containsKey

public boolean containsKey(Object o)
Specified by:
containsKey in interface Function<CharSequence,Long>

list

public ObjectList<? 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,
                        JSAPException,
                        ClassNotFoundException,
                        SecurityException,
                        NoSuchMethodException
Throws:
IOException
JSAPException
ClassNotFoundException
SecurityException
NoSuchMethodException