Класс 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
- See Also:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
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.isEmpty
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-ключей или -значений -
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-ключи или -значения -
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()
Set ключей, содержащихся в этой карте. Множество поддерживается картой, поэтому изменения в карте отражаются в множестве, и наоборот. Если карта модифицируется во время итерации по множеству (кроме как через собственную операцию итератора 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()
Collection значений, содержащихся в этой карте. Коллекция поддерживается картой, поэтому изменения в карте отражаются в коллекции, и наоборот. Если карта модифицируется во время итерации по коллекции (кроме как через собственную операцию итератора 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().toString
public String toString()
entrySet карты, заключённого в фигурные скобки ("{}"). Смежные отображения разделяются символами ", " (запятая и пробел). Каждое отображение ключ-значение представлено как ключ, за которым следует знак равенства ("="), а затем соответствующее значение. Ключи и значения преобразуются в строки с помощью String.valueOf(Object).clone
protected Object clone() throws CloneNotSupportedException
AbstractMap: сами ключи и значения не клонируются.- Overrides:
-
cloneв классеObject - Returns:
- неглубокую копию этой карты
- Throws:
-
CloneNotSupportedException- если класс объекта не поддерживает интерфейсCloneable. Подклассы, переопределяющие методclone, также могут выбросить это исключение, чтобы указать, что экземпляр не может быть клонирован. - See Also:
© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/AbstractMap.html