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, long offsetBytes, long 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, long offsetChars, long 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, long offsetDoubles, long 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, long offsetFloats, long 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, long offsetInts, long 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, long offsetLongs, long 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, long offsetShorts, long 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, long offsetChars, long 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, long offsetBytes, long 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, long offsetShorts, long 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, long offsetChars, long 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, long offsetInts, long 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, long offsetLongs, long 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, long offsetFloats, long 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, long offsetDoubles, long 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, long offsetChars, long 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