Methods Summary |
---|
public static int | hashCode(int[] array)Hash every element uniformly using the Modified Bernstein hash.
Useful to implement a {@link Object#hashCode} for uniformly distributed data.
if (array == null) {
return 0;
}
/*
* Note that we use 31 here instead of 33 since it's preferred in Effective Java
* and used elsewhere in the runtime (e.g. Arrays#hashCode)
*
* That being said 33 and 31 are nearly identical in terms of their usefulness
* according to http://svn.apache.org/repos/asf/apr/apr/trunk/tables/apr_hash.c
*/
int h = 1;
for (int x : array) {
// Strength reduction; in case the compiler has illusions about divisions being faster
h = ((h << 5) - h) ^ x; // (h * 31) XOR x
}
return h;
|
public static int | hashCode(int x, int y, int z)
return hashCode(new int[] { x, y, z } );
|
public static int | hashCode(int x, int y, int z, int w)
return hashCode(new int[] { x, y, z, w } );
|
public static int | hashCode(int x, int y, int z, int w, int t)
return hashCode(new int[] { x, y, z, w, t } );
|
public static int | hashCode(float[] array)Hash every element uniformly using the Modified Bernstein hash.
Useful to implement a {@link Object#hashCode} for uniformly distributed data.
if (array == null) {
return 0;
}
int h = 1;
for (float f : array) {
int x = Float.floatToIntBits(f);
h = ((h << 5) - h) ^ x; // (h * 31) XOR x
}
return h;
|
public static int | hashCode(T[] array)Hash every element uniformly using the Modified Bernstein hash.
Useful to implement a {@link Object#hashCode} for uniformly distributed data.
if (array == null) {
return 0;
}
int h = 1;
for (T o : array) {
int x = (o == null) ? 0 : o.hashCode();
h = ((h << 5) - h) ^ x; // (h * 31) XOR x
}
return h;
|
public static int | hashCode(T a)
return (a == null) ? 0 : a.hashCode();
|
public static int | hashCode(T a, T b)
int h = hashCode(a);
int x = (b == null) ? 0 : b.hashCode();
h = ((h << 5) - h) ^ x; // (h * 31) XOR x
return h;
|
public static int | hashCode(T a, T b, T c)
int h = hashCode(a, b);
int x = (c == null) ? 0 : c.hashCode();
h = ((h << 5) - h) ^ x; // (h * 31) XOR x
return h;
|
public static int | hashCode(T a, T b, T c, T d)
int h = hashCode(a, b, c);
int x = (d == null) ? 0 : d.hashCode();
h = ((h << 5) - h) ^ x; // (h * 31) XOR x
return h;
|
public static int | hashCode(int x)
return hashCode(new int[] { x } );
|
public static int | hashCode(int x, int y)
return hashCode(new int[] { x, y } );
|