Spec-Zone.ru › OpenJDK 27

Класс AbstractMap<K,V>

java.lang.Object
java.util.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
См. также:
  • Map
  • Collection

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static class  AbstractMap.SimpleEntry<K,V>
Запись, содержащая ключ и значение.
static class  AbstractMap.SimpleImmutableEntry<K,V>
Неизменяемая запись, содержащая ключ и значение.

Вложенные классы и интерфейсы, объявленные в интерфейсе Map

Map.Entry<K,V>
Модификатор и тип Интерфейс Описание
static interface  Map.Entry<K,V>
Элемент карты (пара ключ-значение).

Краткое описание конструкторов

AbstractMap()
Модификатор Конструктор Описание
protected
Единственный конструктор.

Краткое описание методов

Модификатор и тип Метод Описание
void clear()
Удаляет все сопоставления из этой карты (необязательная операция).
protected Object clone()
Возвращает поверхностную копию этого экземпляра AbstractMap: сами ключи и значения не клонируются.
boolean containsKey(Object key)
Возвращает true, если эта карта содержит сопоставление для указанного ключа.
boolean containsValue(Object value)
Возвращает true, если эта карта сопоставляет одному или нескольким ключам указанное значение.
boolean equals(Object o)
Сравнивает указанный объект с этой картой на равенство.
V get(Object key)
Возвращает значение, сопоставленное указанному ключу, или null, если эта карта не содержит сопоставления для этого ключа.
int hashCode()
Возвращает значение хеш-кода этой карты.
boolean isEmpty()
Возвращает true, если эта карта не содержит сопоставлений ключей и значений.
Set<K> keySet()
Возвращает представление ключей, содержащихся в этой карте, в виде Set.
V put(K key, V value)
Сопоставляет указанное значение указанному ключу в этой карте (необязательная операция).
void putAll(Map<? extends K, ? extends V> m)
Копирует все сопоставления из указанной карты в эту карту (необязательная операция).
V remove(Object key)
Удаляет сопоставление для ключа из этой карты, если оно существует (необязательная операция).
int size()
Возвращает количество сопоставлений ключей и значений в этой карте.
String toString()
Возвращает строковое представление этой карты.
Collection<V> values()
Возвращает представление значений, содержащихся в этой карте, в виде Collection.

Методы, объявленные в классе Object

finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация признана устаревшей и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Методы, объявленные в интерфейсе Map

compute, computeIfAbsent, computeIfPresent, entrySet, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
Модификатор и тип Метод Описание
default V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Пытается вычислить сопоставление для указанного ключа и текущего сопоставленного ему значения или null, если текущее сопоставление отсутствует (необязательная операция).
default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
Если указанному ключу ещё не сопоставлено значение (или ему сопоставлено null), пытается вычислить его значение с помощью заданной функции сопоставления и добавляет его в эту карту, если результат не равен null (необязательная операция).
default V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Если значение для указанного ключа существует и не равно null, пытается вычислить новое сопоставление по ключу и текущему сопоставленному ему значению (необязательная операция).
Set<Map.Entry<K,V>> entrySet()
Возвращает представление сопоставлений, содержащихся в этой карте, в виде Set.
default void forEach(BiConsumer<? super K, ? super V> action)
Выполняет заданное действие для каждой записи этой карты, пока не будут обработаны все записи или действие не выбросит исключение.
default V getOrDefault(Object key, V defaultValue)
Возвращает значение, сопоставленное указанному ключу, или defaultValue, если эта карта не содержит сопоставления для этого ключа.
default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
Если указанному ключу ещё не сопоставлено значение или ему сопоставлено null, сопоставляет ему заданное ненулевое значение (необязательная операция).
default V putIfAbsent(K key, V value)
Если указанному ключу ещё не сопоставлено значение (или ему сопоставлено null), сопоставляет ему заданное значение и возвращает null; в противном случае возвращает текущее значение (необязательная операция).
default boolean remove(Object key, Object value)
Удаляет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция).
default V replace(K key, V value)
Заменяет запись для указанного ключа, только если в данный момент ему сопоставлено какое-либо значение (необязательная операция).
default boolean replace(K key, V oldValue, V newValue)
Заменяет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция).
default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function)
Заменяет значение каждой записи результатом вызова заданной функции для этой записи, пока не будут обработаны все записи или функция не выбросит исключение (необязательная операция).

Подробное описание конструкторов

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
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. Метод iterator подкласса возвращает «объект-обертку» над итератором 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. Метод iterator подкласса возвращает «объект-обертку» над итератором 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, если указанный объект равен этой карте
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает хеш-код этой карты. Хеш-код карты определяется как сумма хеш-кодов каждой записи в представлении entrySet() карты. Это гарантирует, что из m1.equals(m2) следует m1.hashCode()==m2.hashCode() для любых двух карт m1 и m2, как того требует общий контракт Object.hashCode().
Определено в:
hashCode в интерфейсе Map<K,V>
Переопределяет:
hashCode в классе Object
Требования к реализации:
Эта реализация выполняет итерацию по entrySet(), вызывая hashCode() для каждого элемента (записи) множества и суммируя результаты.
Возвращает:
значение хеш-кода этой карты
См. также:
  • Map.Entry.hashCode()
  • Object.equals(Object)
  • Set.equals(Object)

toString

public String toString()
Возвращает строковое представление этой карты. Строковое представление состоит из списка отображений ключ-значение в порядке, возвращаемом итератором представления entrySet карты, заключенного в фигурные скобки ("{}"). Соседние отображения разделяются символами ", " (запятая и пробел). Каждое отображение ключ-значение представляется ключом, за которым следует знак равенства ("="), а затем соответствующее значение. Ключи и значения преобразуются в строки, как при вызове String.valueOf(Object).
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этой карты

clone

protected Object clone() throws CloneNotSupportedException
Возвращает поверхностную копию этого экземпляра AbstractMap: сами ключи и значения не клонируются.
Переопределяет:
clone в классе Object
Возвращает:
поверхностная копия этой карты
Исключения:
CloneNotSupportedException — если класс объекта не поддерживает интерфейс Cloneable. Подклассы, переопределяющие метод clone, также могут выбрасывать это исключение, чтобы указать, что экземпляр нельзя клонировать.
См. также:
  • Cloneable

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры основных понятий, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API