it.unimi.dsi.util
Class ShiftAddXorSignedStringMap

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

public class ShiftAddXorSignedStringMap
extends AbstractObject2LongFunction<CharSequence>
implements StringMap<CharSequence>, Serializable

A string map based on a minimal perfect hash signed using Shift-Add-Xor hashes.

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. By signing each output value with a hash of the string, we get a dictionary-like functionality with a rate error that can be balanced with space occupancy (signatures can go from 1 to Long.SIZE bits).

For the kind of hash we use, see “Performance in practice of string hashing functions”, by M.V. Ramakrishna and Justin Zobel, Proc. of the Fifth International Conference on Database Systems for Advanced Applications, 1997, pages 215−223.

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

Field Summary
protected  Object2LongFunction<? extends CharSequence> function
          The underlying map.
protected  long mask
          The mask to get only width nonzero bits.
protected  int shift
          The left shift to get only width nonzero bits.
protected  LongBigList signatures
          Signatures.
protected  int width
          The width in bits of each signature.
 
Fields inherited from class it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction
defRetValue
 
Constructor Summary
ShiftAddXorSignedStringMap(Iterator<? extends CharSequence> iterator, Object2LongFunction<? extends CharSequence> map)
          Creates a new shift-add-xor signed string map using a given hash map and 32-bit signatures.
ShiftAddXorSignedStringMap(Iterator<? extends CharSequence> iterator, Object2LongFunction<? extends CharSequence> map, int signatureWidth)
          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<CharSequence> 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.


signatures

protected final LongBigList signatures
Signatures.


width

protected final int width
The width in bits of each signature.


shift

protected final int shift
The left shift to get only width nonzero bits.


mask

protected final long mask
The mask to get only width nonzero bits.

Constructor Detail

ShiftAddXorSignedStringMap

public ShiftAddXorSignedStringMap(Iterator<? extends CharSequence> iterator,
                                  Object2LongFunction<? extends CharSequence> map)
Creates a new shift-add-xor signed string map using a given hash map and 32-bit signatures.

Parameters:
iterator - an iterator enumerating a set of strings.
map - a minimal perfect hash for the strings enumerated by iterator; it must support size() and have default return value -1.

ShiftAddXorSignedStringMap

public ShiftAddXorSignedStringMap(Iterator<? extends CharSequence> iterator,
                                  Object2LongFunction<? extends CharSequence> map,
                                  int signatureWidth)
Creates a new shift-add-xor signed string map using a given hash map.

Parameters:
iterator - an iterator enumerating a set of strings.
map - a minimal perfect hash for the strings enumerated by iterator; it must support size() and have default return value -1.
signatureWidth - the width, in bits, of the signature of each string.
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>

containsKey

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

size

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

list

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