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

Элемент, содержащий неизменяемый ключ и значение.

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

Map.Entry<K,​V>

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

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

Единственный конструктор.

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

Модификатор и тип Метод Описание
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 в указанной карте. Поведение этой операции не определено, если указанная карта изменяется во время выполнения операции.

Указано:
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

© 1993, 2020, 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/11/docs/api/java.base/java/util/AbstractMap.html

Spec-Zone .ru
спецификации, руководства, описания, API