Класс 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
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
AbstractMap.SimpleEntry<K, |
Запись, содержащая ключ и значение. |
static class |
AbstractMap.SimpleImmutableEntry<K, |
Неизменяемая запись, содержащая ключ и значение. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Единственный конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
clear() |
Удаляет все сопоставления из этой карты (необязательная операция). |
protected Object |
clone() |
Возвращает поверхностную копию этого экземпляра AbstractMap: сами ключи и значения не клонируются. |
boolean |
containsKey |
Возвращает true, если эта карта содержит сопоставление для указанного ключа. |
boolean |
containsValue |
Возвращает true, если эта карта сопоставляет одному или нескольким ключам указанное значение. |
boolean |
equals |
Сравнивает указанный объект с этой картой на равенство. |
V |
get |
Возвращает значение, сопоставленное указанному ключу, или null, если эта карта не содержит сопоставления для этого ключа. |
int |
hashCode() |
Возвращает значение хеш-кода этой карты. |
boolean |
isEmpty() |
Возвращает true, если эта карта не содержит сопоставлений ключей и значений. |
Set |
keySet() |
Возвращает представление ключей, содержащихся в этой карте, в виде Set. |
V |
put |
Сопоставляет указанное значение указанному ключу в этой карте (необязательная операция). |
void |
putAll |
Копирует все сопоставления из указанной карты в эту карту (необязательная операция). |
V |
remove |
Удаляет сопоставление для ключа из этой карты, если оно существует (необязательная операция). |
int |
size() |
Возвращает количество сопоставлений ключей и значений в этой карте. |
String |
toString() |
Возвращает строковое представление этой карты. |
Collection |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе Map
compute, computeIfAbsent, computeIfPresent, entrySet, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll | Модификатор и тип | Метод | Описание |
|---|---|---|
default V |
compute |
Пытается вычислить сопоставление для указанного ключа и текущего сопоставленного ему значения или null, если текущее сопоставление отсутствует (необязательная операция). |
default V |
computeIfAbsent |
Если указанному ключу ещё не сопоставлено значение (или ему сопоставлено null), пытается вычислить его значение с помощью заданной функции сопоставления и добавляет его в эту карту, если результат не равен null (необязательная операция). |
default V |
computeIfPresent |
Если значение для указанного ключа существует и не равно null, пытается вычислить новое сопоставление по ключу и текущему сопоставленному ему значению (необязательная операция). |
Set |
entrySet() |
Возвращает представление сопоставлений, содержащихся в этой карте, в виде Set. |
default void |
forEach |
Выполняет заданное действие для каждой записи этой карты, пока не будут обработаны все записи или действие не выбросит исключение. |
default V |
getOrDefault |
Возвращает значение, сопоставленное указанному ключу, или defaultValue, если эта карта не содержит сопоставления для этого ключа. |
default V |
merge |
Если указанному ключу ещё не сопоставлено значение или ему сопоставлено null, сопоставляет ему заданное ненулевое значение (необязательная операция). |
default V |
putIfAbsent |
Если указанному ключу ещё не сопоставлено значение (или ему сопоставлено null), сопоставляет ему заданное значение и возвращает null; в противном случае возвращает текущее значение (необязательная операция). |
default boolean |
remove |
Удаляет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция). |
default V |
replace |
Заменяет запись для указанного ключа, только если в данный момент ему сопоставлено какое-либо значение (необязательная операция). |
default boolean |
replace |
Заменяет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция). |
default void |
replaceAll |
Заменяет значение каждой записи результатом вызова заданной функции для этой записи, пока не будут обработаны все записи или функция не выбросит исключение (необязательная операция). |
Подробное описание конструкторов
AbstractMap
protected AbstractMap()
Подробное описание методов
size
public int size()
Integer.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.isEmpty
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, если указанный объект равен этой карте - См. также:
hashCode
public int hashCode()
entrySet() карты. Это гарантирует, что из m1.equals(m2) следует m1.hashCode()==m2.hashCode() для любых двух карт m1 и m2, как того требует общий контракт Object.hashCode().toString
public String toString()
entrySet карты, заключенного в фигурные скобки ("{}"). Соседние отображения разделяются символами ", " (запятая и пробел). Каждое отображение ключ-значение представляется ключом, за которым следует знак равенства ("="), а затем соответствующее значение. Ключи и значения преобразуются в строки, как при вызове String.valueOf(Object).clone
protected Object clone() throws CloneNotSupportedException
AbstractMap: сами ключи и значения не клонируются.- Переопределяет:
-
cloneв классеObject - Возвращает:
- поверхностная копия этой карты
- Исключения:
-
CloneNotSupportedException— если класс объекта не поддерживает интерфейсCloneable. Подклассы, переопределяющие методclone, также могут выбрасывать это исключение, чтобы указать, что экземпляр нельзя клонировать. - См. также:
© 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.