Spec-Zone.ru › Scala 2.12 Library

Объект scala.util.hashing.MurmurHash3

объект MurmurHash3 extends MurmurHash3

Реализация алгоритма MurmurHash 3 (MurmurHash3_x86_32) Остина Эпплби. Этот объект содержит методы для хеширования значений различных типов, а также средства для построения Hashing объектов.

Этот алгоритм разработан для генерации хорошо распределённых некриптографических хешей. Он предназначен для хеширования данных в 32-битных блоках (целые числа).

Метод смешивания (mix) должен вызываться на каждой итерации для обновления промежуточного значения хеша. Для последнего блока в хеш можно использовать mixLast, который немного быстрее. В конце необходимо вызвать finalizeHash для вычисления окончательного значения хеша.

Он основан на более раннем коде MurmurHash3 от Рекса Керра, но алгоритм MurmurHash3 был изменён его создателем Остином Эпплби для исправления некоторых уязвимостей и улучшения производительности. Это представляет собой последнюю и, предположительно, окончательную версию алгоритма (ревизия 136).

Источник
MurmurHash3.scala
См. также

https://github.com/aappleby/smhasher

Линейные супертипы

Типовые члены

класс ArrayHashing[T] extends Hashing[Массив[T]]

Члены-значения

final def !=(arg0: Any): Boolean

Проверка двух объектов на неравенство.

returns

true если !(this == that), иначе false.

Definition Classes
AnyRef → Any

final def ##(): Int

Эквивалентно x.hashCode, за исключением упакованных числовых типов и null. Для чисел возвращает значение хэша, согласованное с равенством значений: если два экземпляра типа значения сравниваются как true, то ## вернёт одинаковое значение хэша для каждого из них. Для null возвращает хэш-код, где null.hashCode вызывает NullPointerException.

returns

значение хэша, согласованное с ==

Definition Classes
AnyRef → Any

final def ==(arg0: Any): Boolean

Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).

returns

true если объект-получатель эквивалентен аргументу; false в противном случае.

Definition Classes
AnyRef → Any

def arrayHash[T](a: Array[T]): Int

final def arrayHash[T](a: Array[T], seed: Int): Int

Вычисление хэша массива.

Definition Classes
MurmurHash3

def arrayHashing[T]: ArrayHashing[T]

final val arraySeed: Int(1007110753)

final def asInstanceOf[T0]: T0

Приведение типа объекта-получателя к типу T0.

Обратите внимание, что успех приведения типов во время выполнения зависит от семантики стирания Scala. Поэтому выражение 1.asInstanceOf[String] выбросит ClassCastException во время выполнения, а выражение List(1).asInstanceOf[List[String]] — нет. В последнем примере, поскольку тип аргумента стирается во время компиляции, невозможно проверить, относятся ли содержимое списка к требуемому типу.

returns

объект-получатель.

Definition Classes
Any
Исключения

ClassCastException если объект-получатель не является экземпляром стёртого типа T0.

def bytesHash(data: Array[Byte]): Int

final def bytesHash(data: Array[Byte], seed: Int): Int

Вычисление хэша массива байтов. Быстрее, чем arrayHash, так как хэширует по 4 байта за раз.

Definition Classes
MurmurHash3

def bytesHashing: Hashing[Array[Byte]]

def clone(): AnyRef

Создать копию объекта-получателя.

По умолчанию реализация метода clone зависит от платформы.

returns

копия объекта-получателя.

Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws( ... ) @native()
Примечание

не определён SLS как член AnyRef

final def eq(arg0: AnyRef): Boolean

Проверяет, является ли аргумент (that) ссылкой на объект-получатель (this).

Метод eq реализует отношение эквивалентности на непустых экземплярах AnyRef, и имеет три дополнительных свойства:

    Он согласован: для любых непустых экземпляров x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false. Для любого непустого экземпляра x типа AnyRef, x.eq(null) и null.eq(x) возвращают false. null.eq(null) возвращает true.

При переопределении методов equals или hashCode важно обеспечить согласованность их поведения с равенством ссылок. Поэтому, если два объекта являются ссылками друг на друга (o1 eq o2), они должны быть равны друг другу (o1 == o2) и иметь одинаковое значение хэша (o1.hashCode == o2.hashCode).

returns

true если аргумент является ссылкой на объект-получатель; false в противном случае.

Definition Classes
AnyRef

def equals(arg0: Any): Boolean

Метод равенства для ссылочных типов. Реализация по умолчанию делегирует вызов eq.

См. также equals в scala.Any.

возвращает

true если объект-получатель эквивалентен аргументу; false в противном случае.

Определяющие классы
AnyRef → Any

def finalize(): Unit

Вызывается сборщиком мусора для объекта-получателя, когда на объект больше нет ссылок.

Детали того, когда и вызывается метод finalize, а также взаимодействие между finalize и нелокальными возвратами и исключениями, зависят от платформы.

Атрибуты
protected[lang]
Определяющие классы
AnyRef
Аннотации
@throws( classOf[java.lang.Throwable] )
Примечание

не определен SLS как член AnyRef

final def finalizeHash(hash: Int, length: Int): Int

Завершает хэширование, включающее длину и гарантирующее распространение всех битов.

Определяющие классы
MurmurHash3

final def getClass(): Class[_]

Возвращает представление класса объекта во время выполнения.

возвращает

объект класса, соответствующий типу получателя во время выполнения.

Определяющие классы
AnyRef → Any
Аннотации
@native()

def hashCode(): Int

Метод hashCode для ссылочных типов. См. hashCode в scala.Any.

возвращает

значение хэш-кода для этого объекта.

Определяющие классы
AnyRef → Any
Аннотации
@native()

final def isInstanceOf[T0]: Boolean

Проверяет, является ли динамический тип объекта-получателя T0.

Обратите внимание, что результат проверки учитывает стирание типов Scala. Поэтому выражение 1.isInstanceOf[String] вернет false, а выражение List(1).isInstanceOf[List[String]] вернет true. В последнем примере, поскольку аргумент типа стирается во время компиляции, невозможно проверить, соответствуют ли содержимое списка указанному типу.

возвращает

true если объект-получатель является экземпляром стирания типа T0; false в противном случае.

Определяющие классы
Any

final def listHash(xs: collection.immutable.List[_], seed: Int): Int

Определяющие классы
MurmurHash3

def mapHash(xs: Map[_, _]): Int

final val mapSeed: Int

final def mix(hash: Int, data: Int): Int

Смешивает блок данных в промежуточное значение хэша.

Определяющие классы
MurmurHash3

final def mixLast(hash: Int, data: Int): Int

Возможно используется в качестве последнего шага смешивания. Немного быстрее, чем mix, так как не выполняет дальнейшего смешивания полученного хэша. Для последнего элемента это не обязательно, так как хэш все равно тщательно смешивается во время завершения.

Определяющие классы
MurmurHash3

final def ne(arg0: AnyRef): Boolean

Эквивалентно !(this eq that).

возвращает

true если аргумент не является ссылкой на объект-получатель; false в противном случае.

Определяющие классы
AnyRef

final def notify(): Unit

Разбудит единственную нить, ожидающую монитора объекта-получателя.

Определяющие классы
AnyRef
Аннотации
@native()
Примечание

не определен SLS как член AnyRef

final def notifyAll(): Unit

Разбудит все нити, ожидающие монитора объекта-получателя.

Определяющие классы
AnyRef
Аннотации
@native()
Примечание

не определен SLS как член AnyRef

def orderedHash(xs: TraversableOnce[Any]): Int

final def orderedHash(xs: TraversableOnce[Any], seed: Int): Int

Вычислить хеш, зависящий от порядка аргументов.

Definition Classes
MurmurHash3

def orderedHashing: Hashing[TraversableOnce[Any]]

def productHash(x: Product): Int

final def productHash(x: Product, seed: Int): Int

Вычислить хеш произведения

Definition Classes
MurmurHash3

def productHashing: Hashing[Product]

final val productSeed: Int(-889275714)

def seqHash(xs: collection.Seq[_]): Int

final val seqSeed: Int

def setHash(xs: Set[_]): Int

final val setSeed: Int

def stringHash(x: String): Int

final def stringHash(str: String, seed: Int): Int

Вычислить хеш строки

Definition Classes
MurmurHash3

def stringHashing: Hashing[String]

final val stringSeed: Int(-137723950)

final val symmetricSeed: Int(-1248659538)

final def synchronized[T0](arg0: ⇒ T0): T0

Definition Classes
AnyRef

def toString(): String

Создаёт строковое представление этого объекта. Стандартное представление зависит от платформы. На платформе Java это конкатенация имени класса, "@" и хэш-кода объекта в шестнадцатеричном формате.

returns

строковое представление объекта.

Definition Classes
AnyRef → Any

final val traversableSeed: Int(-415593707)

def unorderedHash(xs: TraversableOnce[Any]): Int

final def unorderedHash(xs: TraversableOnce[Any], seed: Int): Int

Вычислить хеш, симметричный относительно аргументов - то есть хеш, в котором порядок появления элементов не имеет значения. Это полезно для хеширования наборов, например.

Definition Classes
MurmurHash3

def unorderedHashing: Hashing[TraversableOnce[Any]]

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )

final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )

final def wait(arg0: Long): Unit

Определяющие классы
AnyRef
Аннотации
@throws( ... ) @native()

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala/util/hashing/MurmurHash3$.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API