Class Murmur3


  • public class Murmur3
    extends java.lang.Object
    Murmur3 is successor to Murmur2 fast non-crytographic hash algorithms. Murmur3 32 and 128 bit variants. 32-bit Java port of https://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp#94 128-bit Java port of https://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp#255 This is a public domain code with no copyrights. From homepage of MurmurHash (https://code.google.com/p/smhasher/), "All MurmurHash versions are public domain software, and the author disclaims all copyright to their code."
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static long C1  
      private static int C1_32  
      private static long C2  
      private static int C2_32  
      static int DEFAULT_SEED  
      private static int M  
      private static int M_32  
      private static int N_32  
      private static int N1  
      private static int N2  
      static long NULL_HASHCODE  
      private static int R1  
      private static int R1_32  
      private static int R2  
      private static int R2_32  
      private static int R3  
    • Constructor Summary

      Constructors 
      Constructor Description
      Murmur3()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      private static int fmix32​(int length, int hash)  
      private static long fmix64​(long h)  
      static long[] hash128​(byte[] data)
      Murmur3 128-bit variant.
      static long[] hash128​(byte[] data, int offset, int length, int seed)
      Murmur3 128-bit variant.
      static int hash32​(byte[] data)
      Murmur3 32-bit variant.
      static int hash32​(byte[] data, int length)
      Murmur3 32-bit variant.
      static int hash32​(byte[] data, int length, int seed)
      Murmur3 32-bit variant.
      static int hash32​(byte[] data, int offset, int length, int seed)
      Murmur3 32-bit variant.
      static int hash32​(long l0)  
      static int hash32​(long l0, int seed)
      Murmur3 32-bit variant.
      static int hash32​(long l0, long l1)  
      static int hash32​(long l0, long l1, int seed)
      Murmur3 32-bit variant.
      static long hash64​(byte[] data)
      Murmur3 64-bit variant.
      static long hash64​(byte[] data, int offset, int length)  
      static long hash64​(byte[] data, int offset, int length, int seed)
      Murmur3 64-bit variant.
      static long hash64​(int data)  
      static long hash64​(long data)  
      static long hash64​(short data)  
      private static int mix32​(int k, int hash)  
      private static int orBytes​(byte b1, byte b2, byte b3, byte b4)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

    • Method Detail

      • hash32

        public static int hash32​(long l0,
                                 long l1)
      • hash32

        public static int hash32​(long l0)
      • hash32

        public static int hash32​(long l0,
                                 int seed)
        Murmur3 32-bit variant.
      • hash32

        public static int hash32​(long l0,
                                 long l1,
                                 int seed)
        Murmur3 32-bit variant.
      • hash32

        public static int hash32​(byte[] data)
        Murmur3 32-bit variant.
        Parameters:
        data - - input byte array
        Returns:
        - hashcode
      • hash32

        public static int hash32​(byte[] data,
                                 int length)
        Murmur3 32-bit variant.
        Parameters:
        data - - input byte array
        length - - length of array
        Returns:
        - hashcode
      • hash32

        public static int hash32​(byte[] data,
                                 int length,
                                 int seed)
        Murmur3 32-bit variant.
        Parameters:
        data - - input byte array
        length - - length of array
        seed - - seed. (default 0)
        Returns:
        - hashcode
      • hash32

        public static int hash32​(byte[] data,
                                 int offset,
                                 int length,
                                 int seed)
        Murmur3 32-bit variant.
        Parameters:
        data - - input byte array
        offset - - offset of data
        length - - length of array
        seed - - seed. (default 0)
        Returns:
        - hashcode
      • mix32

        private static int mix32​(int k,
                                 int hash)
      • fmix32

        private static int fmix32​(int length,
                                  int hash)
      • hash64

        public static long hash64​(byte[] data)
        Murmur3 64-bit variant. This is essentially MSB 8 bytes of Murmur3 128-bit variant.
        Parameters:
        data - - input byte array
        Returns:
        - hashcode
      • hash64

        public static long hash64​(long data)
      • hash64

        public static long hash64​(int data)
      • hash64

        public static long hash64​(short data)
      • hash64

        public static long hash64​(byte[] data,
                                  int offset,
                                  int length)
      • hash64

        public static long hash64​(byte[] data,
                                  int offset,
                                  int length,
                                  int seed)
        Murmur3 64-bit variant. This is essentially MSB 8 bytes of Murmur3 128-bit variant.
        Parameters:
        data - - input byte array
        length - - length of array
        seed - - seed. (default is 0)
        Returns:
        - hashcode
      • hash128

        public static long[] hash128​(byte[] data)
        Murmur3 128-bit variant.
        Parameters:
        data - - input byte array
        Returns:
        - hashcode (2 longs)
      • hash128

        public static long[] hash128​(byte[] data,
                                     int offset,
                                     int length,
                                     int seed)
        Murmur3 128-bit variant.
        Parameters:
        data - - input byte array
        offset - - the first element of array
        length - - length of array
        seed - - seed. (default is 0)
        Returns:
        - hashcode (2 longs)
      • fmix64

        private static long fmix64​(long h)
      • orBytes

        private static int orBytes​(byte b1,
                                   byte b2,
                                   byte b3,
                                   byte b4)