Class XxHash

java.lang.Object
org.apache.datasketches.memory.XxHash

public final class XxHash extends Object
The XxHash is a fast, non-cryptographic, 64-bit hash function that has excellent avalanche and 2-way bit independence properties. This java version adapted the C++ version and the OpenHFT/Zero-Allocation-Hashing implementation referenced below as inspiration.

The C++ source repository: https://github.com/Cyan4973/xxHash. It has a BSD 2-Clause License: http://www.opensource.org/licenses/bsd-license.php. See LICENSE.

Portions of this code were adapted from OpenHFT/Zero-Allocation-Hashing, which has an Apache 2 license as does this site. See LICENSE.

Author:
Lee Rhodes
  • Method Summary

    Modifier and Type
    Method
    Description
    static long
    hashByteArr(byte[] arr, int offsetBytes, int lengthBytes, long seed)
    Hash the given arr starting at the given offset and continuing for the given length using the given seed.
    static long
    hashCharArr(char[] arr, int offsetChars, int lengthChars, long seed)
    Hash the given arr starting at the given offset and continuing for the given length using the given seed.
    static long
    hashDoubleArr(double[] arr, int offsetDoubles, int lengthDoubles, long seed)
    Hash the given arr starting at the given offset and continuing for the given length using the given seed.
    static long
    hashFloatArr(float[] arr, int offsetFloats, int lengthFloats, long seed)
    Hash the given arr starting at the given offset and continuing for the given length using the given seed.
    static long
    hashIntArr(int[] arr, int offsetInts, int lengthInts, long seed)
    Hash the given arr starting at the given offset and continuing for the given length using the given seed.
    static long
    hashLong(long in, long seed)
    Returns a 64-bit hash from a single long.
    static long
    hashLongArr(long[] arr, int offsetLongs, int lengthLongs, long seed)
    Hash the given arr starting at the given offset and continuing for the given length using the given seed.
    static long
    hashShortArr(short[] arr, int offsetShorts, int lengthShorts, long seed)
    Hash the given arr starting at the given offset and continuing for the given length using the given seed.
    static long
    hashString(String str, int offsetChars, int lengthChars, long seed)
    Hash the given arr starting at the given offset and continuing for the given length using the given seed.

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • hashByteArr

      public static long hashByteArr(byte[] arr, int offsetBytes, int lengthBytes, long seed)
      Hash the given arr starting at the given offset and continuing for the given length using the given seed.
      Parameters:
      arr - the given array
      offsetBytes - starting at this offset
      lengthBytes - continuing for this length
      seed - the given seed
      Returns:
      the hash
    • hashShortArr

      public static long hashShortArr(short[] arr, int offsetShorts, int lengthShorts, long seed)
      Hash the given arr starting at the given offset and continuing for the given length using the given seed.
      Parameters:
      arr - the given array
      offsetShorts - starting at this offset
      lengthShorts - continuing for this length
      seed - the given seed
      Returns:
      the hash
    • hashCharArr

      public static long hashCharArr(char[] arr, int offsetChars, int lengthChars, long seed)
      Hash the given arr starting at the given offset and continuing for the given length using the given seed.
      Parameters:
      arr - the given array
      offsetChars - starting at this offset
      lengthChars - continuing for this length
      seed - the given seed
      Returns:
      the hash
    • hashIntArr

      public static long hashIntArr(int[] arr, int offsetInts, int lengthInts, long seed)
      Hash the given arr starting at the given offset and continuing for the given length using the given seed.
      Parameters:
      arr - the given array
      offsetInts - starting at this offset
      lengthInts - continuing for this length
      seed - the given seed
      Returns:
      the hash
    • hashLongArr

      public static long hashLongArr(long[] arr, int offsetLongs, int lengthLongs, long seed)
      Hash the given arr starting at the given offset and continuing for the given length using the given seed.
      Parameters:
      arr - the given array
      offsetLongs - starting at this offset
      lengthLongs - continuing for this length
      seed - the given seed
      Returns:
      the hash
    • hashLong

      public static long hashLong(long in, long seed)
      Returns a 64-bit hash from a single long. This method has been optimized for speed when only a single hash of a long is required.
      Parameters:
      in - A long.
      seed - A long valued seed.
      Returns:
      the hash.
    • hashFloatArr

      public static long hashFloatArr(float[] arr, int offsetFloats, int lengthFloats, long seed)
      Hash the given arr starting at the given offset and continuing for the given length using the given seed.
      Parameters:
      arr - the given array
      offsetFloats - starting at this offset
      lengthFloats - continuing for this length
      seed - the given seed
      Returns:
      the hash
    • hashDoubleArr

      public static long hashDoubleArr(double[] arr, int offsetDoubles, int lengthDoubles, long seed)
      Hash the given arr starting at the given offset and continuing for the given length using the given seed.
      Parameters:
      arr - the given array
      offsetDoubles - starting at this offset
      lengthDoubles - continuing for this length
      seed - the given seed
      Returns:
      the hash
    • hashString

      public static long hashString(String str, int offsetChars, int lengthChars, long seed)
      Hash the given arr starting at the given offset and continuing for the given length using the given seed.
      Parameters:
      str - the given string
      offsetChars - starting at this offset
      lengthChars - continuing for this length
      seed - the given seed
      Returns:
      the hash