Трейт scala.collection.mutable.HashTable
Трейт HashTable[A, Entry >: Null <: HashEntry[A, Entry]] extends HashUtils[A]
Абстрактные члены
абстрактный 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 зависит от платформы.
- возвращает
копию объекта-приемника.
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
объект класса, соответствующий типу получателя во время выполнения.
def hashCode(): Int
Метод hashCode для ссылочных типов. См. hashCode в scala.Any.
- returns
значение хеш-кода для этого объекта.
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
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
Этот класс можно использовать для построения структур данных, основанных на хэш-таблицах. Класс
HashTable[A]реализует хэш-таблицу, которая сопоставляет ключи типаAсо значениями полностью абстрактного типа членаEntry. Классы, которые используютHashTable, должны предоставить реализацию дляEntry.Основными двумя параметрами, влияющими на производительность хэш-таблицы, являются начальный размер и коэффициент заполнения. Размер относится к количеству корзин в хэш-таблице, а коэффициент заполнения — это мера того, насколько полной может стать хэш-таблица, прежде чем ее размер будет автоматически удвоен. Оба параметра можно изменить, переопределив соответствующие значения в классе
HashTable.тип элементов, содержащихся в этой хэш-таблице.
1