Класс AbstractMap<K, V>
- Type Parameters:
-
K- тип ключей, хранимых в этой карте -
V- тип сопоставленных значений
- Все реализованные интерфейсы:
Map<K,V>
- Прямые известные подклассы:
-
ConcurrentHashMap,ConcurrentSkipListMap,EnumMap,HashMap,IdentityHashMap,TreeMap,WeakHashMap
public abstract class AbstractMap<K,V> extends Object implements Map<K,V>
Map, чтобы минимизировать усилия, необходимые для реализации этого интерфейса. Для реализации неизменяемой карты программисту нужно только расширить этот класс и предоставить реализацию метода entrySet, который возвращает представление множества сопоставлений карты. Как правило, возвращаемое множество, в свою очередь, будет реализовано на основе AbstractSet. Это множество не должно поддерживать методы add или remove, а его итератор не должен поддерживать метод remove.
Для реализации изменяемой карты программисту дополнительно необходимо переопределить метод put этого класса (в противном случае он генерирует исключение UnsupportedOperationException), а итератор, возвращаемый методом entrySet().iterator(), должен дополнительно реализовать метод remove.
Программист, как правило, должен предоставить пустой (без аргументов) и конструктор карты, согласно рекомендации в спецификации интерфейса Map.
Документация для каждого неабстрактного метода в этом классе подробно описывает его реализацию. Каждый из этих методов может быть переопределён, если реализуемая карта допускает более эффективную реализацию.
Этот класс является членом Java Collections Framework.
- Since:
- 1.2
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
AbstractMap.SimpleEntry<K, |
Элемент, хранящий ключ и значение. |
static class |
AbstractMap.SimpleImmutableEntry<K, |
Неизменяемый элемент, хранящий ключ и значение. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Единственный конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
clear() |
Удаляет все сопоставления из этой карты (необязательная операция). |
protected Object |
clone() |
Возвращает неглубокую копию этого экземпляра AbstractMap: сами ключи и значения не клонируются. |
boolean |
containsKey |
Возвращает true, если эта карта содержит сопоставление для указанного ключа. |
boolean |
containsValue |
Возвращает true, если эта карта сопоставляет один или несколько ключей со значением. |
boolean |
equals |
Сравнивает указанный объект с этой картой на равенство. |
V |
get |
Возвращает значение, которому сопоставлен указанный ключ, или null, если эта карта не содержит сопоставления для ключа. |
int |
hashCode() |
Возвращает хэш-код для этой карты. |
boolean |
isEmpty() |
Возвращает true, если эта карта не содержит сопоставлений ключ-значение. |
Set |
keySet() |
Возвращает представление Set ключей, содержащихся в этой карте. |
V |
put |
Сопоставляет указанное значение с указанным ключом в этой карте (необязательная операция). |
void |
putAll |
Копирует все сопоставления из указанной карты в эту карту (необязательная операция). |
V |
remove |
Удаляет сопоставление для ключа из этой карты, если оно присутствует (необязательная операция). |
int |
size() |
Возвращает количество сопоставлений ключ-значение в этой карте. |
String |
toString() |
Возвращает строковое представление этой карты. |
Collection |
values() |
Возвращает представление Collection значений, содержащихся в этой карте. |
Методы, объявленные в классе java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.util.Map
compute, computeIfAbsent, computeIfPresent, entrySet, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
Подробное описание конструкторов
AbstractMap
protected AbstractMap()
Подробное описание методов
size
public int size()
Integer.MAX_VALUE элементов, возвращает Integer.MAX_VALUE. - Определено в:
-
sizeв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация возвращает
entrySet().size(). - Возвращает:
- количество пар ключ-значение в этом словаре
isEmpty
public boolean isEmpty()
true, если этот словарь не содержит пар ключ-значение.- Определено в:
-
isEmptyв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация возвращает
size() == 0. - Возвращает:
-
trueесли этот словарь не содержит пар ключ-значение
containsValue
public boolean containsValue(Object value)
true если этот словарь сопоставляет один или несколько ключей заданному значению. Более формально, возвращает true тогда и только тогда, когда этот словарь содержит по меньшей мере одно сопоставление со значением v, такое что Objects.equals(value, v). Эта операция, вероятно, потребует времени, линейного относительно размера словаря, для большинства реализаций интерфейса Map.- Определено в:
-
containsValueв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация перебирает
entrySet()в поисках записи со значением. Если такая запись найдена, возвращаетсяtrue. Если итерация завершается без нахождения такой записи, возвращаетсяfalse. Обратите внимание, что эта реализация требует времени, линейного относительно размера словаря. - Параметры:
-
value- значение, присутствие которого в этом словаре необходимо проверить - Возвращает:
-
trueесли этот словарь сопоставляет один или несколько ключей заданному значению - Исключения:
-
ClassCastException- если значение имеет неподходящий тип для этого словаря (необязательно) -
NullPointerException- если указанное значение равно null, а этот словарь не допускает null-значений (необязательно)
containsKey
public boolean containsKey(Object key)
true если этот словарь содержит сопоставление для заданного ключа. Более формально, возвращает true тогда и только тогда, когда этот словарь содержит сопоставление для ключа k, такого что Objects.equals(key, k). (Может быть не более одного такого сопоставления.)- Определено в:
-
containsKeyв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация перебирает
entrySet()в поисках записи с заданным ключом. Если такая запись найдена, возвращаетсяtrue. Если итерация завершается без нахождения такой записи, возвращаетсяfalse. Обратите внимание, что эта реализация требует времени, линейного относительно размера словаря; многие реализации переопределят этот метод. - Параметры:
-
key- ключ, присутствие которого в этом словаре необходимо проверить - Возвращает:
-
trueесли этот словарь содержит сопоставление для заданного ключа - Исключения:
-
ClassCastException- если ключ имеет неподходящий тип для этого словаря (необязательно) -
NullPointerException- если указанный ключ равен null, а этот словарь не допускает null-ключей (необязательно)
get
public V get(Object key)
null если в этом словаре нет сопоставления для ключа. Более формально, если этот словарь содержит сопоставление от ключа k к значению v, такое что Objects.equals(key, k), то этот метод возвращает v; в противном случае он возвращает null. (Может быть не более одного такого сопоставления.)
Если этот словарь допускает null-значения, то возвращаемое значение null не обязательно означает, что словарь не содержит сопоставления для ключа; также возможно, что словарь явно сопоставляет ключ со значением null. Операция containsKey может использоваться для различения этих двух случаев.
- Определено в:
-
getв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация перебирает
entrySet()в поисках записи с заданным ключом. Если такая запись найдена, возвращается значение записи. Если итерация завершается без нахождения такой записи, возвращаетсяnull. Обратите внимание, что эта реализация требует времени, линейного относительно размера словаря; многие реализации переопределят этот метод. - Параметры:
-
key- ключ, связанное значение которого нужно вернуть - Возвращает:
- значение, которому сопоставлен указанный ключ, или
nullесли в этом словаре нет сопоставления для ключа - Исключения:
-
ClassCastException- если ключ имеет неподходящий тип для этого словаря (необязательно) -
NullPointerException- если указанный ключ равен null, а этот словарь не допускает null-ключей (необязательно)
put
public V put(K key, V value)
m считается содержащим сопоставление для ключа k тогда и только тогда, когда m.containsKey(k) вернёт true.)- Определено в:
-
putв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация всегда выбрасывает
UnsupportedOperationException. - Параметры:
-
key- ключ, с которым необходимо связать заданное значение -
value- значение, которое необходимо связать с заданным ключом - Возвращает:
- предыдущее значение, связанное с
key, илиnullесли дляkeyне было сопоставления. (Возвращаемое значениеnullтакже может указывать, что словарь ранее сопоставилnullсо значениемkey, если реализация поддерживаетnullзначения.) - Исключения:
-
UnsupportedOperationException- если операцияputне поддерживается этим словарем -
ClassCastException- если класс заданного ключа или значения препятствует его хранению в этом словаре -
NullPointerException- если заданный ключ или значение равно null, а этот словарь не допускает null-ключей или null-значений -
IllegalArgumentException- если какая-то характеристика заданного ключа или значения препятствует его хранению в этом словаре
remove
public V remove(Object key)
k к значению v, такое что Objects.equals(key, k), то это сопоставление удаляется. (Словарь может содержать не более одного такого сопоставления). Возвращает значение, которому этот словарь ранее сопоставил ключ, или null если в словаре не было сопоставления для ключа.
Если этот словарь допускает null-значения, то возвращаемое значение null не обязательно означает, что в словаре не было сопоставления для ключа; также возможно, что словарь явно сопоставил ключ со значением null.
Словарь не будет содержать сопоставления для указанного ключа после возврата вызова.
- Определено в:
-
removeв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация перебирает
entrySet()в поисках записи с заданным ключом. Если такая запись найдена, её значение извлекается с помощью операцииgetValue, запись удаляется из коллекции (и базового словаря) с помощью операцииremoveитератора, и сохранённое значение возвращается. Если итерация завершается без нахождения такой записи, возвращаетсяnull. Обратите внимание, что эта реализация требует времени, линейного относительно размера словаря; многие реализации переопределят этот метод.Обратите внимание, что эта реализация выбрасывает
UnsupportedOperationExceptionесли итераторentrySetне поддерживает методremoveи этот словарь содержит сопоставление для указанного ключа. - Параметры:
-
key- ключ, сопоставление которого должно быть удалено из словаря - Возвращает:
- предыдущее значение, связанное с
key, илиnullесли дляkeyне было сопоставления. - Исключения:
-
UnsupportedOperationException- если операцияremoveне поддерживается этим словарем -
ClassCastException- если ключ имеет неподходящий тип для этого словаря (необязательно) -
NullPointerException- если указанный ключ равен null, а этот словарь не допускает null-ключей (необязательно)
putAll
public void putAll(Map<? extends K,? extends V> m)
put(k, v) для этой карты один раз для каждого сопоставления из ключа k к значению v в указанной карте. Поведение этой операции не определено, если указанная карта изменяется во время выполнения операции. Если у указанной карты определён порядок обхода, обработка её сопоставлений обычно происходит в этом порядке.- Specified by:
-
putAllв интерфейсеMap<K,V> - Implementation Requirements:
- Эта реализация итерируется по коллекции
entrySet()указанной карты и вызывает операциюputэтой карты один раз для каждой записи, возвращаемой итерацией.Обратите внимание, что эта реализация выбрасывает
UnsupportedOperationException, если эта карта не поддерживает операциюput, и указанная карта не пуста. - Parameters:
-
m- сопоставления, которые должны быть сохранены в этой карте - Throws:
-
UnsupportedOperationException- если операцияputAllне поддерживается этой картой -
ClassCastException- если класс ключа или значения в указанной карте препятствует его сохранению в этой карте -
NullPointerException- если указанная карта равна null или если эта карта не допускает null-ключей или null-значений, и указанная карта содержит null-ключи или null-значения -
IllegalArgumentException- если некоторые свойства ключа или значения в указанной карте препятствуют его сохранению в этой карте
clear
public void clear()
- Specified by:
-
clearв интерфейсеMap<K,V> - Implementation Requirements:
- Эта реализация вызывает
entrySet().clear().Обратите внимание, что эта реализация выбрасывает
UnsupportedOperationException, если картаentrySetне поддерживает операциюclear. - Throws:
-
UnsupportedOperationException- если операцияclearне поддерживается этой картой
keySet
public Set<K> keySet()
remove), результаты итерации не определены. Набор поддерживает удаление элементов, которое удаляет соответствующее сопоставление из карты, через операции Iterator.remove, Set.remove, removeAll, retainAll и clear. Он не поддерживает операции add и addAll. - Specified by:
-
keySetв интерфейсеMap<K,V> - Implementation Requirements:
- Эта реализация возвращает набор, который наследуется от
AbstractSet. Метод итератора подкласса возвращает "обёртку" над итераторомentrySet()этой карты. Методsizeделегирует методуsizeэтой карты, а методcontainsделегирует методуcontainsKeyэтой карты.Набор создаётся при первом вызове этого метода и возвращается при всех последующих вызовах. Синхронизация не выполняется, поэтому есть небольшая вероятность, что несколько вызовов этого метода не вернут один и тот же набор.
- Returns:
- представление в виде набора ключей, содержащихся в этой карте
values
public Collection<V> values()
remove), результаты итерации не определены. Коллекция поддерживает удаление элементов, которое удаляет соответствующее сопоставление из карты, через операции Iterator.remove, Collection.remove, removeAll, retainAll и clear. Она не поддерживает операции add и addAll.- Specified by:
-
valuesв интерфейсеMap<K,V> - Implementation Requirements:
- Эта реализация возвращает коллекцию, которая наследуется от
AbstractCollection. Метод итератора подкласса возвращает "обёртку" над итераторомentrySet()этой карты. Методsizeделегирует методуsizeэтой карты, а методcontainsделегирует методуcontainsValueэтой карты.Коллекция создаётся при первом вызове этого метода и возвращается при всех последующих вызовах. Синхронизация не выполняется, поэтому есть небольшая вероятность, что несколько вызовов этого метода не вернут одну и ту же коллекцию.
- Returns:
- представление в виде коллекции значений, содержащихся в этой карте
equals
public boolean equals(Object o)
true, если данный объект также является картой, и две карты представляют одни и те же сопоставления. Более формально, две карты m1 и m2 представляют одни и те же сопоставления, если m1.entrySet().equals(m2.entrySet()). Это гарантирует, что метод equals работает корректно для разных реализаций интерфейса Map.- Specified by:
-
equalsв интерфейсеMap<K,V> - Overrides:
-
equalsв классеObject - Implementation Requirements:
- Эта реализация сначала проверяет, является ли указанный объект этой картой; если да, то возвращает
true. Затем она проверяет, является ли указанный объект картой, размер которой совпадает с размером этой карты; если нет, то возвращаетfalse. Если да, она итерируется по коллекцииentrySetэтой карты и проверяет, содержит ли указанная карта каждое сопоставление, содержащееся в этой карте. Если указанная карта не содержит такое сопоставление, возвращаетсяfalse. Если итерация завершается, возвращаетсяtrue. - Parameters:
-
o- объект, который необходимо сравнить на равенство с этой картой - Returns:
-
trueесли указанный объект равен этой карте - See Also:
hashCode
public int hashCode()
entrySet() карты. Это гарантирует, что m1.equals(m2) подразумевает m1.hashCode()==m2.hashCode() для любых двух карт m1 и m2, как требуется общим контрактом Object.hashCode().- Specified by:
-
hashCodeв интерфейсеMap<K,V> - Overrides:
-
hashCodeв классеObject - Implementation Requirements:
- Эта реализация итерируется по
entrySet(), вызываяhashCode()для каждого элемента (записи) в наборе и суммируя результаты. - Returns:
- значение хэш-кода для этой карты
- See Also:
toString
public String toString()
entrySet карты, заключённых в фигурные скобки ("{}"). Соседние сопоставления разделяются символами ", " (запятая и пробел). Каждое сопоставление ключ-значение отображается как ключ, за которым следует знак равенства ("=") и связанное значение. Ключи и значения преобразуются в строки с помощью String.valueOf(Object).- Overrides:
-
toStringв классеObject - Returns:
- строковое представление этой карты
clone
protected Object clone() throws CloneNotSupportedException
AbstractMap: ключи и значения сами не клонируются.- Overrides:
-
cloneв классеObject - Returns:
- неглубокая копия этой карты
- Throws:
-
CloneNotSupportedException- если класс объекта не поддерживает интерфейсCloneable. Подклассы, переопределяющие методclone, также могут выбросить это исключение, чтобы указать, что экземпляр не может быть клонирован. - See Also:
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/AbstractMap.html