Spec-Zone.ru › OpenJDK 25

Класс 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>

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

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

Методы, объявленные в интерфейсе 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
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, если указанный объект равен этой карте
См. также:
  • 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/AbstractMap.html

Spec-Zone.ru

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