Spec-Zone .ru
спецификации, руководства, описания, API
|
public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, Serializable
null
объект может использоваться в качестве ключа или в качестве значения. Чтобы успешно сохранить и получить объекты от хеш-таблицы, объекты, используемые в качестве, ключи должны реализовать hashCode
метод и equals
метод.
Экземпляр Hashtable
имеет два параметра, которые влияют на его производительность: начальная емкость и коэффициент загрузки. Емкость является числом блоков в хэш-таблице, и начальная емкость является просто емкостью в то время, когда хэш-таблица создается. Отметьте, что хэш-таблица открыта: в случае "хэш-коллизии" единственный блок хранит многократные записи, которые должны искаться последовательно. Коэффициент загрузки является мерой того, как полный хэш-таблице позволяют добраться прежде, чем ее емкость будет автоматически увеличена. Начальная емкость и параметры коэффициента загрузки являются просто подсказками к реализации. Точные детали относительно того, когда и вызывается ли метод перефразировки, являются зависящими от реализации.
Обычно, коэффициент загрузки значения по умолчанию (.75) предложения хороший компромисс между затратами времени и пространства. Более высокие значения уменьшают издержки пространства, но увеличивают стоимость времени, чтобы искать запись (который отражается в большинстве операций Hashtable, включая get и put).
Начальная емкость управляет компромиссом между потраченным впустую пространством и потребностью в rehash
операции, которые являются отнимающими много времени. Нет rehash
операции будут когда-либо происходить, если начальная емкость будет больше чем максимальное количество записей, то Hashtable будет содержать разделенный на его коэффициент загрузки. Однако, установка начальной емкости слишком высоко может потратить впустую пространство.
Если много записей должны быть превращены в a Hashtable
, создание этого с достаточно большой емкостью может позволить записям быть вставленными более эффективно чем разрешение этому выполнить автоматическое перефразирование как необходимый вырастить таблицу.
Этот пример создает хеш-таблицу чисел. Это использует имена чисел как ключи:
Hashtable<String, Integer> numbers
= new Hashtable<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);
Чтобы получить число, используйте следующий код:
Integer n = numbers.get("two");
if (n != null) {
System.out.println("two = " + n);
}
iterators, возвращенные методом iterator наборов, возвращенных всеми "методами представления набора этого class", являются сбоем быстро: если Хеш-таблица структурно изменяется когда-либо после того, как iterator создается, всегда кроме через собственный метод remove iterator, iterator бросит a ConcurrentModificationException
. Таким образом, перед лицом параллельной модификации, iterator перестал работать быстро и чисто, вместо того, чтобы рискнуть произвольным, недетерминированным поведением в неопределенное время в будущем. Перечисления, возвращенные ключами Хеш-таблицы и методами элементов, не являются сбоем быстро.
Отметьте, что поведение сбоя быстро iterator не может быть гарантировано, как, вообще говоря, невозможно сделать любые трудные гарантии в присутствии несинхронизируемой параллельной модификации. Перестаньте работать быстро iterators бросают ConcurrentModificationException на основе максимальных усилий. Поэтому, было бы неправильно записать программу, которая зависела от этого исключения для его правильности: поведение сбоя быстро iterators должно использоваться только, чтобы обнаружить ошибки.
С Java 2 платформы v1.2, этот class был retrofitted, чтобы реализовать Map
интерфейс, делая это элемент Платформы Наборов Java. В отличие от новых реализаций набора, Hashtable
синхронизируется. Если ориентированная на многопотоковое исполнение реализация не необходима, рекомендуется использовать HashMap
вместо Hashtable
. Если ориентированная на многопотоковое исполнение чрезвычайно параллельная реализация требуется, то рекомендуется использовать ConcurrentHashMap
вместо Hashtable
.
Object.equals(java.lang.Object)
, Object.hashCode()
, rehash()
, Collection
, Map
, HashMap
, TreeMap
, Сериализированная ФормаКонструктор и Описание |
---|
Hashtable()
Создает новую, пустую хеш-таблицу с емкостью начальной буквы значения по умолчанию (11) и коэффициент загрузки (0.75).
|
Hashtable(int initialCapacity)
Создает новую, пустую хеш-таблицу с указанной начальной емкостью и коэффициентом загрузки значения по умолчанию (0.75).
|
Hashtable(int initialCapacity, float loadFactor)
Создает новую, пустую хеш-таблицу с указанной начальной емкостью и указанным коэффициентом загрузки.
|
Hashtable(Map<? extends K,? extends V> t)
Создает новую хеш-таблицу с теми же самыми отображениями как данная Карта.
|
Модификатор и Тип | Метод и Описание |
---|---|
void |
clear()
Очищает эту хеш-таблицу так, чтобы она не содержала ключей.
|
Объект |
clone()
Создает мелкую копию этой хеш-таблицы.
|
V |
compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
Попытки вычислить отображение для указанного ключа и его тока отображенное значение (или
null если нет никакого текущего отображения). |
V |
computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
Если указанный ключ уже не связывается со значением (или отображается на
null ), пытается вычислить его значение, используя данную отображающуюся функцию и не вводит это в эту карту если null . |
V |
computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
Если значение для указанного ключа присутствует и является ненулем, попытки вычислить новое отображение, данное ключ и его ток отображенное значение.
|
boolean |
contains(Object value)
Тесты, если некоторые контурные карты в указанное значение в этой хеш-таблице.
|
boolean |
containsKey(Object key)
Тесты, если указанный объект является ключом в этой хеш-таблице.
|
boolean |
containsValue(Object value)
Возвращает true, если эта хеш-таблица отображает один или более ключей на это значение.
|
Enumeration<V> |
elements()
Возвращает перечисление значений в этой хеш-таблице.
|
Set<Map.Entry<K,V>> |
entrySet()
Возвраты a
Set представление отображений содержится в этой карте. |
boolean |
equals(Object o)
Сравнивает указанный Объект с этой Картой для равенства, согласно определению в интерфейсе Карты.
|
void |
forEach(BiConsumer<? super K,? super V> action)
Выполняет данное действие на каждой записи в этой карте, в порядке, записи возвращаются набором записи iterator (который может быть неуказанным), пока все записи не были обработаны, или действие бросает
Exception . |
V |
get(Object key)
Возвращает значение, на которое указанный ключ отображается, или
null если эта карта не содержит отображения для ключа. |
V |
getOrDefault(Object key, V defaultValue)
Возвращает значение, на которое указанный ключ отображается, или
defaultValue если эта карта не содержит отображения для ключа. |
int |
hashCode()
Возвращает значение хэш-кода для этой Карты согласно определению в интерфейсе Карты.
|
boolean |
isEmpty()
Тесты, если эта хеш-таблица не отображает ключей на значения.
|
Enumeration<K> |
keys()
Возвращает перечисление ключей в этой хеш-таблице.
|
Set<K> |
keySet()
Возвраты a
Set представление ключей содержится в этой карте. |
V |
merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
Если указанный ключ уже не связывается со значением или связывается с нулем, партнеры он с данным значением.
|
V |
put(K key, V value)
Отображает указанное
key к указанному value в этой хеш-таблице. |
void |
putAll(Map<? extends K,? extends V> t)
Копии все отображения от указанной карты до этой хеш-таблицы.
|
V |
putIfAbsent(K key, V value)
Если указанный ключ уже не связывается со значением (или отображается на
null ) партнеры это с данным значением и возвратами null , еще возвращает текущую стоимость. |
protected void |
rehash()
Увеличивает емкость и внутренне реорганизовывает эту хеш-таблицу, чтобы разместить и получить доступ к ее записям более эффективно.
|
V |
remove(Object key)
Удаляет ключ (и его соответствующее значение) от этой хеш-таблицы.
|
boolean |
remove(Object key, Object value)
Удаляет запись для указанного ключа, только если это в настоящий момент отображается на указанное значение.
|
V |
replace(K key, V value)
Заменяет запись для указанного ключа, только если это в настоящий момент отображается на некоторое значение.
|
boolean |
replace(K key, V oldValue, V newValue)
Заменяет запись для указанного ключа только если в настоящий момент отображенный на указанное значение.
|
void |
replaceAll(BiFunction<? super K,? super V,? extends V> function)
Замены значение каждой записи с результатом вызова заданной функции на той записи, в записях порядка возвращаются набором записи iterator, до всех записей, были обработаны, или функция выдает исключение.
|
int |
size()
Возвращает число ключей в этой хеш-таблице.
|
Строка |
toString()
Возвращает строковое представление этого объекта Hashtable в форме ряда записей, включенных в фигурные скобки и разделенный символами ASCII " , " (запятая и пространство).
|
Collection<V> |
values()
Возвраты a
Collection представление значений содержится в этой карте. |
public Hashtable(int initialCapacity, float loadFactor)
initialCapacity
- начальная емкость хеш-таблицы.loadFactor
- коэффициент загрузки хеш-таблицы.IllegalArgumentException
- если начальная емкость является меньше чем нуль, или если коэффициент загрузки неположителен.public Hashtable(int initialCapacity)
initialCapacity
- начальная емкость хеш-таблицы.IllegalArgumentException
- если начальная емкость является меньше чем нуль.public Hashtable()
public Hashtable(Map<? extends K,? extends V> t)
t
- карта, отображения которой должны быть помещены в эту карту.NullPointerException
- если указанная карта является нулем.public int size()
public boolean isEmpty()
public Enumeration<K> keys()
keys
в class Dictionary<K,V>
Enumeration
, elements()
, keySet()
, Map
public Enumeration<V> elements()
elements
в class Dictionary<K,V>
Enumeration
, keys()
, values()
, Map
public boolean contains(Object value)
containsKey
метод. Отметьте, что этот метод идентичен в функциональности containsValue
, (который является частью Map
интерфейс в платформе наборов).
value
- значение, чтобы искатьtrue
если и только если некоторые контурные карты к value
параметр в этой хеш-таблице как определено методом equals; false
иначе.NullPointerException
- если значение null
public boolean containsValue(Object value)
Отметьте, что этот метод идентичен в функциональности contains
(который предшествует Map
интерфейс).
containsValue
в интерфейсе Map<K,V>
value
- оцените, чье присутствие в этой хеш-таблице должно быть протестированоNullPointerException
- если значение null
public boolean containsKey(Object key)
containsKey
в интерфейсе Map<K,V>
key
- возможный ключtrue
если и только если указанный объект является ключом в этой хеш-таблице, как определено методом equals; false
иначе.NullPointerException
- если ключ null
contains(Object)
public V get(Object key)
null
если эта карта не содержит отображения для ключа. Более формально, если эта карта содержит отображение от ключа k
к значению v
так, что (key.equals(k))
, тогда этот метод возвраты v
; иначе это возвращается null
. (Может быть самое большее одно такое отображение.)
get
в интерфейсе Map<K,V>
get
в class Dictionary<K,V>
key
- ключ, присваиваемое значение которого должно быть возвращеноnull
если эта карта не содержит отображения для ключаNullPointerException
- если указанный ключ является нулемput(Object, Object)
protected void rehash()
public V put(K key, V value)
key
к указанному value
в этой хеш-таблице. Ни ключ, ни значение не могут быть null
. Значение может быть получено, вызывая get
метод с ключом, который равен исходному ключу.
put
в интерфейсе Map<K,V>
put
в class Dictionary<K,V>
key
- ключ хеш-таблицыvalue
- значениеnull
если у этого не было тогоNullPointerException
- если ключ или значение null
Object.equals(Object)
, get(Object)
public V remove(Object key)
remove
в интерфейсе Map<K,V>
remove
в class Dictionary<K,V>
key
- ключ, который должен быть удаленnull
если у ключа не было отображенияNullPointerException
- если ключ null
public void putAll(Map<? extends K,? extends V> t)
putAll
в интерфейсе Map<K,V>
t
- отображения, которые будут сохранены в этой картеNullPointerException
- если указанная карта является нулемpublic void clear()
public Object clone()
public String toString()
public Set<K> keySet()
Set
представление ключей содержится в этой карте. Набор поддерживается картой, так изменения к карте отражаются в наборе, и наоборот. Если карта изменяется, в то время как итерация по набору происходит (кроме посредством собственной работы remove iterator), результаты итерации неопределены. Набор поддерживает удаление элемента, которое удаляет соответствующее отображение из карты, через Iterator.remove, Set.remove, removeAll, retainAll, и операции clear. Это не поддерживает операции addAll или add.public Set<Map.Entry<K,V>> entrySet()
Set
представление отображений содержится в этой карте. Набор поддерживается картой, так изменения к карте отражаются в наборе, и наоборот. Если карта изменяется, в то время как итерация по набору происходит (кроме посредством собственной работы remove iterator, или посредством работы setValue на записи карты, возвращенной iterator), результаты итерации неопределены. Набор поддерживает удаление элемента, которое удаляет соответствующее отображение из карты, через Iterator.remove, Set.remove, removeAll, retainAll и операции clear. Это не поддерживает операции addAll или add.public Collection<V> values()
Collection
представление значений содержится в этой карте. Набор поддерживается картой, так изменения к карте отражаются в наборе, и наоборот. Если карта изменяется, в то время как итерация по набору происходит (кроме посредством собственной работы remove iterator), результаты итерации неопределены. Набор поддерживает удаление элемента, которое удаляет соответствующее отображение из карты, через Iterator.remove, Collection.remove, removeAll, retainAll и операции clear. Это не поддерживает операции addAll или add.public boolean equals(Object o)
public int hashCode()
public V getOrDefault(Object key, V defaultValue)
Map
defaultValue
если эта карта не содержит отображения для ключа. Реализация по умолчанию не делает гарантий о синхронизации или свойствах атомарности этого метода. Любая реализация, обеспечивающая гарантии атомарности, должна переопределить этот метод и задокументировать его свойства параллелизма.
getOrDefault
в интерфейсе Map<K,V>
key
- ключ, присваиваемое значение которого должно быть возвращеноdefaultValue
если эта карта не содержит отображения для ключаpublic void forEach(BiConsumer<? super K,? super V> action)
Map
Exception
. Исключения, выданные действием, передаются к вызывающей стороне. Реализация по умолчанию должна быть переопределена реализациями, если они могут обеспечить более производительную реализацию чем iterator-на-основе.
Реализация по умолчанию не делает гарантий о синхронизации или свойствах атомарности этого метода. Любая реализация, обеспечивающая гарантии атомарности, должна переопределить этот метод и задокументировать его свойства параллелизма.
public void replaceAll(BiFunction<? super K,? super V,? extends V> function)
Map
Реализация по умолчанию не делает гарантий о синхронизации или свойствах атомарности этого метода. Любая реализация, обеспечивающая гарантии атомарности, должна переопределить этот метод и задокументировать его свойства параллелизма.
replaceAll
в интерфейсе Map<K,V>
function
- функция, чтобы примениться к каждой записиpublic V putIfAbsent(K key, V value)
Map
null
) партнеры это с данным значением и возвратами null
, еще возвращает текущую стоимость. Реализация по умолчанию не делает гарантий о синхронизации или свойствах атомарности этого метода. Любая реализация, обеспечивающая гарантии атомарности, должна переопределить этот метод и задокументировать его свойства параллелизма.
putIfAbsent
в интерфейсе Map<K,V>
key
- ключ, с которым должно быть связано указанное значениеvalue
- значение, которое будет связано с указанным ключом1
если не было никакого отображения для ключа. (A null
возврат может также указать что карта, ранее связанная null
с ключом, если реализация поддерживает нулевые значения.)public boolean remove(Object key, Object value)
Map
Реализация по умолчанию не делает гарантий о синхронизации или свойствах атомарности этого метода. Любая реализация, обеспечивающая гарантии атомарности, должна переопределить этот метод и задокументировать его свойства параллелизма.
public boolean replace(K key, V oldValue, V newValue)
Map
Реализация по умолчанию не делает гарантий о синхронизации или свойствах атомарности этого метода. Любая реализация, обеспечивающая гарантии атомарности, должна переопределить этот метод и задокументировать его свойства параллелизма.
public V replace(K key, V value)
Map
Реализация по умолчанию не делает гарантий о синхронизации или свойствах атомарности этого метода. Любая реализация, обеспечивающая гарантии атомарности, должна переопределить этот метод и задокументировать его свойства параллелизма.
replace
в интерфейсе Map<K,V>
key
- ключ, с которым связывается указанное значениеvalue
- значение, которое будет связано с указанным ключомnull
если не было никакого отображения для ключа. (A null
возврат может также указать что карта, ранее связанная null
с ключом, если реализация поддерживает нулевые значения.)public V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
Map
null
), пытается вычислить его значение, используя данную отображающуюся функцию и не вводит это в эту карту если null
. Если функция возвращается null
никакое отображение не записывается. Если сама функция выдает исключение (непроверенное), исключение повторно бросается, и никакое отображение не записывается. Наиболее распространенное использование должно создать новый объект, служащий начальной буквой отображенное значение или результат memoized, как в:
map.computeIfAbsent(key, k -> new Value(f(k)));
Реализация по умолчанию не делает гарантий о синхронизации или свойствах атомарности этого метода. Любая реализация, обеспечивающая гарантии атомарности, должна переопределить этот метод и задокументировать его свойства параллелизма. В частности все реализации подынтерфейса ConcurrentMap
должен задокументировать, применяется ли функция однажды атомарно, только если значение не присутствует. Любой class, который разрешает нулевые значения, должен задокументировать, ли и как этот метод отличает отсутствие в нулевых отображениях.
computeIfAbsent
в интерфейсе Map<K,V>
key
- ключ, с которым должно быть связано указанное значениеmappingFunction
- функция, чтобы вычислить значениеpublic V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
Map
Если функция возвращается null
, отображение удаляется. Если сама функция выдает исключение (непроверенное), исключение повторно бросается, и текущее отображение оставляют неизменным.
Реализация по умолчанию не делает гарантий о синхронизации или свойствах атомарности этого метода. Любая реализация, обеспечивающая гарантии атомарности, должна переопределить этот метод и задокументировать его свойства параллелизма. В частности все реализации подынтерфейса ConcurrentMap
должен задокументировать, применяется ли функция однажды атомарно, только если значение не присутствует. Любой class, который разрешает нулевые значения, должен задокументировать, ли и как этот метод отличает отсутствие в нулевых отображениях.
computeIfPresent
в интерфейсе Map<K,V>
key
- ключ, с которым должно быть связано указанное значениеremappingFunction
- функция, чтобы вычислить значениеpublic V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
Map
null
если нет никакого текущего отображения). Например, чтобы или создать или добавить a String msg
к построению карты ценности:
map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))
(Метод merge()
часто более просто использовать в таких целях.) Если функция возвращается null
, отображение удаляется (или остается отсутствующим если первоначально отсутствующий). Если сама функция выдает исключение (непроверенное), исключение повторно бросается, и текущее отображение оставляют неизменным.
Реализация по умолчанию не делает гарантий о синхронизации или свойствах атомарности этого метода. Любая реализация, обеспечивающая гарантии атомарности, должна переопределить этот метод и задокументировать его свойства параллелизма. В частности все реализации подынтерфейса ConcurrentMap
должен задокументировать, применяется ли функция однажды атомарно, только если значение не присутствует. Любой class, который разрешает нулевые значения, должен задокументировать, ли и как этот метод отличает отсутствие в нулевых отображениях.
public V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
Map
null
. Этот метод может быть полезным, комбинируя многократные отображенные значения для ключа. Например, чтобы или создать или добавить a String msg
к построению карты ценности:
map.merge(key, msg, String::concat)
Если функция возвращается null
, отображение удаляется (или остается отсутствующим если первоначально отсутствующий). Если сама функция выдает исключение (непроверенное), исключение повторно бросается, и текущее отображение оставляют неизменным.
Реализация по умолчанию не делает гарантий о синхронизации или свойствах атомарности этого метода. Любая реализация, обеспечивающая гарантии атомарности, должна переопределить этот метод и задокументировать его свойства параллелизма. В частности все реализации подынтерфейса ConcurrentMap
должен задокументировать, применяется ли функция однажды атомарно, только если значение не присутствует. Любой class, который разрешает нулевые значения, должен задокументировать, ли и как этот метод отличает отсутствие в нулевых отображениях.
merge
в интерфейсе Map<K,V>
key
- ключ, с которым должно быть связано указанное значениеvalue
- значение, чтобы использовать если отсутствующийremappingFunction
- функция, чтобы повторно вычислить значение, если существующий
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92