Class MurmurHash$

java.lang.Object
org.apache.pekko.routing.MurmurHash$

public class MurmurHash$ extends Object
An object designed to generate well-distributed non-cryptographic hashes. It is designed to hash a collection of integers; along with the integers to hash, it generates two magic streams of integers to increase the distribution of repetitive input sequences. Thus, three methods need to be called at each step (to start and to incorporate a new integer) to update the values. Only one method needs to be called to finalize the hash.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final MurmurHash$
    Static reference to the singleton instance of this Scala object.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    <T> int
    Compute a high-quality hash of an array
    int
    extendHash(int hash, int value, int magicA, int magicB)
    Incorporates a new value into an existing hash.
    int
    finalizeHash(int hash)
    Once all hashes have been incorporated, this performs a final mixing
    int
    nextMagicA(int magicA)
    Given a magic integer from the first stream, compute the next
    int
    nextMagicB(int magicB)
    Given a magic integer from the second stream, compute the next
    int
    startHash(int seed)
    Begin a new hash with a seed value.
    int
    The initial magic integers in the first stream.
    int
    The initial magic integer in the second stream.
    int
    Compute a high-quality hash of a string
    <T> int
    symmetricHash(scala.collection.IterableOnce<T> xs, int seed)
    Compute a hash that is symmetric in its arguments--that is, where the order of appearance of elements does not matter.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • MODULE$

      public static final MurmurHash$ MODULE$
      Static reference to the singleton instance of this Scala object.
  • Constructor Details

    • MurmurHash$

      public MurmurHash$()
  • Method Details

    • startHash

      public int startHash(int seed)
      Begin a new hash with a seed value.
    • startMagicA

      public int startMagicA()
      The initial magic integers in the first stream.
    • startMagicB

      public int startMagicB()
      The initial magic integer in the second stream.
    • extendHash

      public int extendHash(int hash, int value, int magicA, int magicB)
      Incorporates a new value into an existing hash.

      Parameters:
      hash - the prior hash value
      value - the new value to incorporate
      magicA - a magic integer from the stream
      magicB - a magic integer from a different stream
      Returns:
      the updated hash value
    • nextMagicA

      public int nextMagicA(int magicA)
      Given a magic integer from the first stream, compute the next
    • nextMagicB

      public int nextMagicB(int magicB)
      Given a magic integer from the second stream, compute the next
    • finalizeHash

      public int finalizeHash(int hash)
      Once all hashes have been incorporated, this performs a final mixing
    • arrayHash

      public <T> int arrayHash(Object a)
      Compute a high-quality hash of an array
    • stringHash

      public int stringHash(String s)
      Compute a high-quality hash of a string
    • symmetricHash

      public <T> int symmetricHash(scala.collection.IterableOnce<T> xs, int seed)
      Compute a hash that is symmetric in its arguments--that is, where the order of appearance of elements does not matter. This is useful for hashing sets, for example.