Spec-Zone.ru › OpenJDK 24

Класс AbstractMap<K,V>

java.lang.Object
java.util.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:
  • Map
  • Collection

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

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

Вложенные классы/интерфейсы, объявленные в интерфейсе java.util.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 значений, содержащихся в этой карте.

Методы, объявленные в классе 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-ключей или -значений
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:
  • Object.hashCode()
  • HashMap

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:
  • Map.Entry.hashCode()
  • Object.equals(Object)
  • Set.equals(Object)

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:
  • Cloneable

© 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

Spec-Zone.ru

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