Класс 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> | Элемент, содержащий неизменяемый ключ и значение. |
Вложенные классы/интерфейсы, объявленные в интерфейсе java.util.Map
Map.Entry<K,V> Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | AbstractMap() | Единственный конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | clear() | Удаляет все сопоставления из этой карты (необязательная операция). |
protected Object | clone() | Возвращает неглубокую копию этого экземпляра |
boolean | containsKey(Object key) | Возвращает |
boolean | containsValue(Object value) | Возвращает |
boolean | equals(Object o) | Сравнивает указанный объект с этой картой на равенство. |
V | get(Object key) | Возвращает значение, которому сопоставлен указанный ключ, или |
int | hashCode() | Возвращает код хэша для этой карты. |
boolean | isEmpty() | Возвращает |
Set<K> | keySet() | Возвращает |
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() | Возвращает |
Методы, объявленные в классе 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).
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