Class HashCommon
- java.lang.Object
-
- org.codelibs.jhighlight.fastutil.HashCommon
-
public class HashCommon extends Object
Common code for all hash-based classes.
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
HashCommon()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static int
arraySize(int expected, float f)
Returns the least power of two smaller than or equal to 230 and larger than or equal toMath.ceil( expected / f )
.static long
bigArraySize(long expected, float f)
Returns the least power of two larger than or equal toMath.ceil( expected / f )
.static int
double2int(double d)
Returns the hash code that would be returned byDouble.hashCode()
.static int
float2int(float f)
Returns the hash code that would be returned byFloat.hashCode()
.static int
long2int(long l)
Returns the hash code that would be returned byLong.hashCode()
.static int
maxFill(int n, float f)
Returns the maximum number of entries that can be filled before rehashing.static long
maxFill(long n, float f)
Returns the maximum number of entries that can be filled before rehashing.static int
murmurHash3(int x)
Avalanches the bits of an integer by applying the finalisation step of MurmurHash3.static long
murmurHash3(long x)
Avalanches the bits of a long integer by applying the finalisation step of MurmurHash3.static int
nextPowerOfTwo(int x)
Return the least power of two greater than or equal to the specified value.static long
nextPowerOfTwo(long x)
Return the least power of two greater than or equal to the specified value.
-
-
-
Field Detail
-
REMOVED
public static final Object REMOVED
This reference is used to fill keys and values of removed entries (if they are objects).null
cannot be used as it would confuse the search algorithm in the presence of an actualnull
key.
-
-
Method Detail
-
murmurHash3
public static final int murmurHash3(int x)
Avalanches the bits of an integer by applying the finalisation step of MurmurHash3.This method implements the finalisation step of Austin Appleby's MurmurHash3. Its purpose is to avalanche the bits of the argument to within 0.25% bias. It is used, among other things, to scramble quickly (but deeply) the hash values returned by
Object.hashCode()
.- Parameters:
x
- an integer.- Returns:
- a hash value with good avalanching properties.
-
murmurHash3
public static final long murmurHash3(long x)
Avalanches the bits of a long integer by applying the finalisation step of MurmurHash3.This method implements the finalisation step of Austin Appleby's MurmurHash3. Its purpose is to avalanche the bits of the argument to within 0.25% bias. It is used, among other things, to scramble quickly (but deeply) the hash values returned by
Object.hashCode()
.Incidentally, iterating this method starting from a nonzero value will generate a sequence of nonzero values that passes strongest statistical tests.
- Parameters:
x
- a long integer.- Returns:
- a hash value with good avalanching properties.
-
float2int
public static final int float2int(float f)
Returns the hash code that would be returned byFloat.hashCode()
.- Returns:
- the same code as
new Float(f).hashCode()
.
-
double2int
public static final int double2int(double d)
Returns the hash code that would be returned byDouble.hashCode()
.- Returns:
- the same code as
new Double(f).hashCode()
.
-
long2int
public static final int long2int(long l)
Returns the hash code that would be returned byLong.hashCode()
.- Returns:
- the same code as
new Long(f).hashCode()
.
-
nextPowerOfTwo
public static int nextPowerOfTwo(int x)
Return the least power of two greater than or equal to the specified value.Note that this function will return 1 when the argument is 0.
- Parameters:
x
- an integer smaller than or equal to 230.- Returns:
- the least power of two greater than or equal to the specified value.
-
nextPowerOfTwo
public static long nextPowerOfTwo(long x)
Return the least power of two greater than or equal to the specified value.Note that this function will return 1 when the argument is 0.
- Parameters:
x
- a long integer smaller than or equal to 262.- Returns:
- the least power of two greater than or equal to the specified value.
-
maxFill
public static int maxFill(int n, float f)
Returns the maximum number of entries that can be filled before rehashing.- Parameters:
n
- the size of the backing array.f
- the load factor.- Returns:
- the maximum number of entries before rehashing.
-
maxFill
public static long maxFill(long n, float f)
Returns the maximum number of entries that can be filled before rehashing.- Parameters:
n
- the size of the backing array.f
- the load factor.- Returns:
- the maximum number of entries before rehashing.
-
arraySize
public static int arraySize(int expected, float f)
Returns the least power of two smaller than or equal to 230 and larger than or equal toMath.ceil( expected / f )
.- Parameters:
expected
- the expected number of elements in a hash table.f
- the load factor.- Returns:
- the minimum possible size for a backing array.
- Throws:
IllegalArgumentException
- if the necessary size is larger than 230.
-
bigArraySize
public static long bigArraySize(long expected, float f)
Returns the least power of two larger than or equal toMath.ceil( expected / f )
.- Parameters:
expected
- the expected number of elements in a hash table.f
- the load factor.- Returns:
- the minimum possible size for a backing big array.
-
-