Spec-Zone.ru › Scala 2.12 Library

Трейт scala.collection.mutable.HashTable

Трейт HashTable[A, Entry >: Null <: HashEntry[A, Entry]] extends HashUtils[A]

Этот класс можно использовать для построения структур данных, основанных на хэш-таблицах. Класс HashTable[A] реализует хэш-таблицу, которая сопоставляет ключи типа A со значениями полностью абстрактного типа члена Entry. Классы, которые используют HashTable, должны предоставить реализацию для Entry.

Основными двумя параметрами, влияющими на производительность хэш-таблицы, являются начальный размер и коэффициент заполнения. Размер относится к количеству корзин в хэш-таблице, а коэффициент заполнения — это мера того, насколько полной может стать хэш-таблица, прежде чем ее размер будет автоматически удвоен. Оба параметра можно изменить, переопределив соответствующие значения в классе HashTable.

A

тип элементов, содержащихся в этой хэш-таблице.

Source
HashTable.scala
Since

1

Линейные супертипы
Известные подклассы

Абстрактные члены

абстрактный def createNewEntry[B](key: A, value: B): Entry

Создает новую запись, которая должна быть немедленно вставлена в хэш-таблицу. Этот метод гарантированно вызывается только один раз и в случае добавления записи. Другими словами, реализация может иметь побочные эффекты.

Атрибуты
protected

Члены конкретных значений

final def !=(arg0: Any): Boolean

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

возвращает

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

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

final def ##(): Int

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

возвращает

значение хэша, соответствующее ==

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

def +(other: String): String

Неявный
Этот член добавляется неявным преобразованием из HashTable[A, Entry] в any2stringadd[HashTable[A, Entry]] с помощью метода any2stringadd в scala.Predef.
Классы определений
any2stringadd

def ->[B](y: B): (HashTable[A, Entry], B)

Неявный
Этот член добавляется неявным преобразованием из HashTable[A, Entry] в ArrowAssoc[HashTable[A, Entry]] с помощью метода ArrowAssoc в scala.Predef.
Классы определений
ArrowAssoc
Аннотации
@inline()

final def ==(arg0: Any): Boolean

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

возвращает

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

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

val _loadFactor: Int

Атрибуты
protected
Аннотации
@transient()

def addEntry(e: Entry): Unit

Добавление записи в таблицу pre: нет записи с тем же ключом

Атрибуты
protected
Аннотации
@deprecatedOverriding( message = ... , since = "2.11.0" )

def alwaysInitSizeMap: Boolean

Атрибуты
protected

final def asInstanceOf[T0]: T0

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

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

возвращает

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

Классы определений
Any
Исключения

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

def calcSizeMapSize(tableLength: Int): Int

Атрибуты
protected
Аннотации
@deprecatedOverriding( message = ... , since = "2.11.0" )

def clearTable(): Unit

Удаление всех записей из таблицы

Атрибуты
protected

def clone(): AnyRef

Создать копию объекта-приемника.

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

возвращает

копию объекта-приемника.

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

не указано SLS в качестве члена AnyRef

def elemEquals(key1: A, key2: A): Boolean

Атрибуты
protected

def elemHashCode(key: A): Int

Атрибуты
protected
Определяющие классы
HashUtils

def ensuring(cond: (HashTable[A, Entry]) ⇒ Boolean, msg: ⇒ Any): HashTable[A, Entry]

Неявный
Этот член добавлен неявным преобразованием из HashTable[A, Entry] в Ensuring[HashTable[A, Entry]] методом Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: (HashTable[A, Entry]) ⇒ Boolean): HashTable[A, Entry]

Неявный
Этот член добавлен неявным преобразованием из HashTable[A, Entry] в Ensuring[HashTable[A, Entry]] методом Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean, msg: ⇒ Any): HashTable[A, Entry]

Неявный
Этот член добавлен неявным преобразованием из HashTable[A, Entry] в Ensuring[HashTable[A, Entry]] методом Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean): HashTable[A, Entry]

Неявный
Этот член добавлен неявным преобразованием из HashTable[A, Entry] в Ensuring[HashTable[A, Entry]] методом Ensuring в scala.Predef.
Определяющие классы
Ensuring

def entriesIterator: Iterator[Entry]

Итератор, возвращающий все записи.

Атрибуты
protected

final def eq(arg0: AnyRef): Boolean

Проверяет, является ли аргумент (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: Any): Boolean

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

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

returns

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

Definition Classes
AnyRef → Any

def finalize(): Unit

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

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

Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
Note

не задано SLS как член AnyRef

def findEntry(key: A): Entry

Найти запись с заданным ключом в таблице, null, если не найдено.

Attributes
protected
Annotations
@deprecatedOverriding( message = ... , since = "2.11.0" )

def findOrAddEntry[B](key: A, value: B): Entry

Найти запись с заданным ключом в таблице или добавить новую, если не найдена. Может быть немного быстрее, чем пара findEntry/addEntry, так как вычисляет индекс хеш-записи только один раз. Возвращает запись, найденную в таблице, или null. Новые записи создаются с помощью метода createNewEntry.

Attributes
protected

def foreachEntry[U](f: (Entry) ⇒ U): Unit

Избегайте итератора для 2-кратного ускорения обхода.

Attributes
protected

def formatted(fmtstr: String): String

Возвращает строку, отформатированную в соответствии с заданной строкой format. Строки формата такие же, как у String.format (см. java.lang.String.format).

Implicit
Этот член добавлен неявным преобразованием из HashTable[A, Entry] в StringFormat[HashTable[A, Entry]], выполненным методом StringFormat в scala.Predef.
Definition Classes
StringFormat
Annotations
@inline()

final def getClass(): Class[_]

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

returns

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

Definition Classes
AnyRef → Any
Annotations
@native()

def hashCode(): Int

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

returns

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

Definition Classes
AnyRef → Any
Annotations
@native()

final def improve(hcode: Int, seed: Int): Int

Делегирует вызов качественному хешированию в scala.util.hashing. Цель — распределение по корзинам наилучшим образом, даже если хеш-код имеет низкую энтропию в некоторых битах.

СТАРАЯ ВЕРСИЯ — быстрая, но плохая для последовательности 0-10000 — небольшая энтропия в старших битах — с 2003 года

var h: Int = hcode + ~(hcode << 9)
h = h ^ (h >>> 14)
h = h + (h << 4)
h ^ (h >>> 10)

остальная часть вычисления обусловлена scala/bug#5293

Attributes
protected
Definition Classes
HashUtils

final def index(hcode: Int): Int

Примечание: мы берем наиболее значимые биты хеш-кода, а не младшие, это имеет решающее значение при параллельном заполнении таблицы

Attributes
protected

def initWithContents(c: Contents[A, Entry]): Unit

Attributes
protected

def initialSize: Int

Начальный размер хеш-таблицы.

Attributes
protected

final def isInstanceOf[T0]: Boolean

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

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

returns

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

Definition Classes
Any

def isSizeMapDefined: Boolean

Attributes
protected
Annotations
@deprecatedOverriding( message = ... , since = "2.11.0" )

final def ne(arg0: AnyRef): Boolean

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

returns

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

Definition Classes
AnyRef

def nnSizeMapAdd(h: Int): Unit

Attributes
protected
Annotations
@deprecatedOverriding( message = ... , since = "2.11.0" )

def nnSizeMapRemove(h: Int): Unit

Attributes
protected
Annotations
@deprecatedOverriding( message = ... , since = "2.11.0" )

def nnSizeMapReset(tableLength: Int): Unit

Attributes
protected
Annotations
@deprecatedOverriding( message = ... , since = "2.11.0" )

final def notify(): Unit

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

Definition Classes
AnyRef
Annotations
@native()
Note

не задан в SLS как член AnyRef

final def notifyAll(): Unit

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

Definition Classes
AnyRef
Annotations
@native()
Note

не задан в SLS как член AnyRef

def removeEntry(key: A): Entry

Удалить запись из таблицы, если она присутствует.

Attributes
protected
Annotations
@deprecatedOverriding( message = ... , since = "2.11.0" )

val seedvalue: Int

Attributes
protected
Annotations
@transient()

final def sizeMapBucketBitSize: Int

Attributes
protected
Definition Classes
HashUtils

final def sizeMapBucketSize: Int

Attributes
protected
Definition Classes
HashUtils

def sizeMapDisable(): Unit

Attributes
protected
Annotations
@deprecatedOverriding( message = ... , since = "2.11.0" )

def sizeMapInit(tableLength: Int): Unit

Attributes
protected

def sizeMapInitAndRebuild(): Unit

Attributes
protected
Annotations
@deprecatedOverriding( message = ... , since = "2.11.0" )

val sizemap: Array[Int]

Массив, отслеживающий количество элементов в блоках по 32 элемента.

Атрибуты
protected
Аннотации
@transient()

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

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

val table: Array[HashEntry[A, Entry]]

Фактическая хеш-таблица.

Атрибуты
protected
Аннотации
@transient()

val tableSize: Int

Количество сопоставлений в этой хеш-таблице.

Атрибуты
protected
Аннотации
@transient()

def tableSizeSeed: Int

Атрибуты
protected

val threshold: Int

Следующее значение размера, при котором происходит изменение размера (ёмкость * коэффициент загрузки).

Атрибуты
protected
Аннотации
@transient()

def toString(): String

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

возвращает

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

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

final def wait(): Unit

Классы-определения
AnyRef
Аннотации
@throws( ... )

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

Классы-определения
AnyRef
Аннотации
@throws( ... )

final def wait(arg0: Long): Unit

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

def →[B](y: B): (HashTable[A, Entry], B)

Неявный
Этот член добавлен неявным преобразованием из HashTable[A, Entry] в ArrowAssoc[HashTable[A, Entry]], выполненное методом ArrowAssoc в scala.Predef.
Классы-определения
ArrowAssoc

© 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/collection/mutable/HashTable.html

Spec-Zone.ru

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