public static int hashInt(int input){ if(input == 0) return 0; int k1 = mixK1(input); int h1 = mixH1(seed, k1); return fmix(h1, 4); }
public static int mixCollHash(int hash, int count){ int h1 = seed; int k1 = mixK1(hash); h1 = mixH1(h1, k1); return fmix(h1, count); }
public static int hashUnencodedChars(CharSequence input){ int h1 = seed; // step through the CharSequence 2 chars at a time for(int i = 1; i < input.length(); i += 2) { int k1 = input.charAt(i - 1) | (input.charAt(i) << 16); k1 = mixK1(k1); h1 = mixH1(h1, k1); } // deal with any remaining characters if((input.length() & 1) == 1) { int k1 = input.charAt(input.length() - 1); k1 = mixK1(k1); h1 ^= k1; } return fmix(h1, 2 * input.length()); }
public static int hashLong(long input){ if(input == 0) return 0; int low = (int) input; int high = (int) (input >>> 32); int k1 = mixK1(low); int h1 = mixH1(seed, k1); k1 = mixK1(high); h1 = mixH1(h1, k1); return fmix(h1, 8); }
public static int mixCollHash(int hash, int count){ int h1 = seed; int k1 = mixK1(hash); h1 = mixH1(h1, k1); return fmix(h1, count); }
public static int hashUnencodedChars(CharSequence input){ int h1 = seed; // step through the CharSequence 2 chars at a time for(int i = 1; i < input.length(); i += 2) { int k1 = input.charAt(i - 1) | (input.charAt(i) << 16); k1 = mixK1(k1); h1 = mixH1(h1, k1); } // deal with any remaining characters if((input.length() & 1) == 1) { int k1 = input.charAt(input.length() - 1); k1 = mixK1(k1); h1 ^= k1; } return fmix(h1, 2 * input.length()); }
public static int hashInt(int input){ if(input == 0) return 0; int k1 = mixK1(input); int h1 = mixH1(seed, k1); return fmix(h1, 4); }
public static int hashLong(long input){ if(input == 0) return 0; int low = (int) input; int high = (int) (input >>> 32); int k1 = mixK1(low); int h1 = mixH1(seed, k1); k1 = mixK1(high); h1 = mixH1(h1, k1); return fmix(h1, 8); }