Класс AbstractMap<K, V>
- Параметры типа:
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.
- Начиная с версии:
- 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. |
Методы, объявленные в интерфейсе 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 из указанной карты. Поведение этой операции не определено, если указанная карта изменяется во время выполнения операции. Если для указанной карты определен порядок обхода, ее отображения, как правило, обрабатываются в этом порядке.- Определено в:
-
putAllв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация перебирает коллекцию
entrySet()указанной карты и для каждой записи, возвращенной итератором, один раз вызывает операциюputэтой карты.Обратите внимание, что эта реализация выбрасывает
UnsupportedOperationException, если эта карта не поддерживает операциюput, а указанная карта не пуста. - Параметры:
-
m- отображения, которые необходимо сохранить в этой карте - Выбрасывает:
-
UnsupportedOperationException- если эта карта не поддерживает операциюputAll -
ClassCastException- если класс ключа или значения из указанной карты не позволяет сохранить его в этой карте -
NullPointerException- если указанная карта равна null или если эта карта не допускает ключи или значения null, а указанная карта содержит ключи или значения null -
IllegalArgumentException- если какое-либо свойство ключа или значения из указанной карты не позволяет сохранить его в этой карте
clear
public void clear()
- Определено в:
-
clearв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация вызывает
entrySet().clear().Обратите внимание, что эта реализация выбрасывает
UnsupportedOperationException, еслиentrySetне поддерживает операциюclear. - Выбрасывает:
-
UnsupportedOperationException- если эта карта не поддерживает операциюclear
keySet
public Set<K> keySet()
Set. Множество поддерживается картой, поэтому изменения карты отражаются в множестве, и наоборот. Если карта изменяется во время итерации по множеству (за исключением изменений, выполненных собственной операцией remove итератора), результаты итерации не определены. Множество поддерживает удаление элементов, при котором соответствующее отображение удаляется из карты, с помощью операций Iterator.remove, Set.remove, removeAll, retainAll и clear. Оно не поддерживает операции add или addAll.- Определено в:
-
keySetв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация возвращает множество, подклассом которого является
AbstractSet. Метод итератора подкласса возвращает «объект-обертку» над итераторомentrySet()этой карты. Методsizeделегирует вызов методуsizeэтой карты, а методcontainsделегирует вызов методуcontainsKeyэтой карты.Множество создается при первом вызове этого метода и возвращается в ответ на все последующие вызовы. Синхронизация не выполняется, поэтому существует небольшая вероятность, что при нескольких вызовах этого метода будет возвращено не одно и то же множество.
- Возвращает:
- представление ключей, содержащихся в этой карте, в виде множества
values
public Collection<V> values()
Collection. Коллекция поддерживается картой, поэтому изменения карты отражаются в коллекции, и наоборот. Если карта изменяется во время итерации по коллекции (за исключением изменений, выполненных собственной операцией remove итератора), результаты итерации не определены. Коллекция поддерживает удаление элементов, при котором соответствующее отображение удаляется из карты, с помощью операций Iterator.remove, Collection.remove, removeAll, retainAll и clear. Она не поддерживает операции add или addAll.- Определено в:
-
valuesв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация возвращает коллекцию, подклассом которой является
AbstractCollection. Метод итератора подкласса возвращает «объект-обертку» над итераторомentrySet()этой карты. Методsizeделегирует вызов методуsizeэтой карты, а методcontainsделегирует вызов методуcontainsValueэтой карты.Коллекция создается при первом вызове этого метода и возвращается в ответ на все последующие вызовы. Синхронизация не выполняется, поэтому существует небольшая вероятность, что при нескольких вызовах этого метода будет возвращена не одна и та же коллекция.
- Возвращает:
- представление значений, содержащихся в этой карте, в виде коллекции
equals
public boolean equals(Object o)
true, если переданный объект также является картой и обе карты представляют одинаковые отображения. Более формально, две карты m1 и m2 представляют одинаковые отображения, если m1.entrySet().equals(m2.entrySet()). Это гарантирует, что метод equals корректно работает для различных реализаций интерфейса Map.- Определено в:
-
equalsв интерфейсеMap<K,V> - Переопределяет:
-
equalsв классеObject - Требования к реализации:
- Сначала эта реализация проверяет, является ли указанный объект этой картой; если да, возвращается
true. Затем она проверяет, является ли указанный объект картой того же размера, что и эта карта; если нет, возвращаетсяfalse. Если да, она перебирает коллекциюentrySetэтой карты и проверяет, содержит ли указанная карта каждое отображение, содержащееся в этой карте. Если указанная карта не содержит такое отображение, возвращаетсяfalse. Если перебор завершается, возвращаетсяtrue. - Параметры:
-
o- объект, который необходимо сравнить на равенство с этой картой - Возвращает:
-
true, если указанный объект равен этой карте - См. также:
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: сами ключи и значения не клонируются.- Переопределяет:
-
cloneв классеObject - Возвращает:
- поверхностную копию этой карты
- Выбрасывает:
-
CloneNotSupportedException- если класс объекта не поддерживает интерфейсCloneable. Подклассы, переопределяющие методclone, также могут выбрасывать это исключение, чтобы указать, что экземпляр нельзя клонировать. - См. также:
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/AbstractMap.html