Объект scala.util.hashing.MurmurHash3
объект MurmurHash3 extends MurmurHash3
Типовые члены
класс 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
копия объекта-получателя.
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[_]
Возвращает представление класса объекта во время выполнения.
- возвращает
объект класса, соответствующий типу получателя во время выполнения.
def hashCode(): Int
Метод hashCode для ссылочных типов. См. hashCode в scala.Any.
- возвращает
значение хэш-кода для этого объекта.
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( ... )
© 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
Реализация алгоритма MurmurHash 3 (MurmurHash3_x86_32) Остина Эпплби. Этот объект содержит методы для хеширования значений различных типов, а также средства для построения
Hashingобъектов.Этот алгоритм разработан для генерации хорошо распределённых некриптографических хешей. Он предназначен для хеширования данных в 32-битных блоках (целые числа).
Метод смешивания (mix) должен вызываться на каждой итерации для обновления промежуточного значения хеша. Для последнего блока в хеш можно использовать mixLast, который немного быстрее. В конце необходимо вызвать finalizeHash для вычисления окончательного значения хеша.
Он основан на более раннем коде MurmurHash3 от Рекса Керра, но алгоритм MurmurHash3 был изменён его создателем Остином Эпплби для исправления некоторых уязвимостей и улучшения производительности. Это представляет собой последнюю и, предположительно, окончательную версию алгоритма (ревизия 136).
https://github.com/aappleby/smhasher