Spec-Zone.ru › OpenJDK 21

Класс 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
См. также:
  • 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-ключей или 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-ключей (необязательно)
END_OF_DOCUMENT_MARKER

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-значений, и указанная карта содержит 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()
Возвращает представление в виде набора ключей, содержащихся в этой карте. Набор поддерживается картой, поэтому изменения в карте отражаются в наборе и наоборот. Если карта изменяется во время итерации по набору (кроме операций самого итератора 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()
Возвращает представление в виде коллекции значений, содержащихся в этой карте. Коллекция поддерживается картой, поэтому изменения в карте отражаются в коллекции и наоборот. Если карта изменяется во время итерации по коллекции (кроме операций самого итератора 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, 2023, 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/21/docs/api/java.base/java/util/AbstractMap.html

Spec-Zone.ru

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