Spec-Zone.ru › Scala 2.13 Library

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

объект MurmurHash3 extends MurmurHash3

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

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

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

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

Исходный код
MurmurHash3.scala
См. также

https://github.com/aappleby/smhasher

Линейные супертипы
MurmurHash3, AnyRef, Any

Члены типа

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

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

final def !=(arg0: Любой): Булево

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

возвращает

true если !(this == that), в противном случае — false.

Определяющие классы
AnyRef → Любой

final def ##(): Целое

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

возвращает

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

Определяющие классы
AnyRef → Любой

final def ==(arg0: Любой): Булево

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

возвращает

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

Определяющие классы
AnyRef → Любой

def arrayHash[T](a: Массив[T]): Целое

final def arrayHash[T](a: Массив[T], seed: Целое): Целое

Вычисление хеша массива. Возможные значения хешей диапазонов распознаются для создания хеша, совместимого с rangeHash.

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

def arrayHashing[T]: ArrayHashing[T]

final val arraySeed: Целое(1007110753)

final def asInstanceOf[T0]: T0

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

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

возвращает

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

Определяющие классы
Любой
Исключения

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

def bytesHash(data: Массив[Байт]): Целое

final def bytesHash(data: Массив[Байт], seed: Целое): Целое

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

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

def bytesHashing: Hashing[Массив[Байт]]

def clone(): AnyRef

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

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

возвращает

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

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

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

final def eq(arg0: AnyRef): Булево

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

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

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

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

возвращает

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

Классы определения
AnyRef

def equals(arg0: AnyRef): Boolean

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

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

возвращает

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

Классы определения
AnyRef → Any

def finalize(): Unit

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

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

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

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

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

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

Классы определения
MurmurHash3

final def getClass(): Class[_ <: AnyRef]

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

возвращает

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

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

def hashCode(): Int

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

возвращает

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

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

final def indexedSeqHash(a: collection.IndexedSeq[Any], seed: Int): Int

Вычисляет хэш IndexedSeq. Потенциальные хэши диапазонов распознаются для создания хэша, совместимого с rangeHash.

Классы определения
MurmurHash3

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

Вычисляет хэш списка. Потенциальные хэши диапазонов распознаются для создания хэша, совместимого с rangeHash.

Классы определения
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: IterableOnce[Any]): Int

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

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

Классы определений
MurmurHash3

def orderedHashing: Hashing[IterableOnce[Any]]

def productHash(x: Product): Int

final def productHash(x: Product, seed: Int, ignorePrefix: Boolean = false): Int

Вычисление хэша продукта

Классы определений
MurmurHash3

def productHashing: Hashing[Product]

final val productSeed: Int(-889275714)

def rangeHash(start: Int, step: Int, last: Int): Int

final def rangeHash(start: Int, step: Int, last: Int, seed: Int): Int

Вычисление хэша диапазона с не менее чем 2 элементами. Диапазоны с меньшим количеством элементов должны использовать seqHash. Параметр last должен быть фактическим последним элементом, производимым диапазоном, а не номинальным end.

Классы определений
MurmurHash3

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

Вычисление хэша строки

Классы определений
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: IterableOnce[Any]): Int

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

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

Definition Classes
MurmurHash3

def unorderedHashing: Hashing[IterableOnce[Any]]

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

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

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException]) @native()

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

Spec-Zone.ru

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