Класс 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) Возвращает |
abstract Set<Map.Entry<K,V>> |
entrySet() Возвращает |
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, 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 такое, что (value==null ? v==null : value.equals(v)). Эта операция, вероятно, потребует времени, линейного относительно размера карты, для большинства реализаций интерфейса Map.
- Указано в:
-
containsValueв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация перебирает
entrySet()в поисках записи со заданным значением. Если такая запись найдена, возвращаетсяtrue. Если итерация завершается без нахождения такой записи, возвращаетсяfalse. Обратите внимание, что эта реализация требует линейного времени, пропорционального размеру карты. - Параметры:
-
value- значение, присутствие которого в этой карте необходимо проверить - Возвращает:
-
trueесли эта карта сопоставляет один или несколько ключей заданному значению - Исключения:
-
ClassCastException- если значение имеет неподходящий тип для этой карты (необязательно) -
NullPointerException- если заданное значение равно null, и эта карта не допускает null-значений (необязательно)
containsKey
public boolean containsKey(Object key)
Возвращает true если эта карта содержит сопоставление для указанного ключа. Более формально, возвращает true тогда и только тогда, когда эта карта содержит сопоставление для ключа k такое, что (key==null ? k==null : key.equals(k)). (Может быть не более одного такого сопоставления.)
- Указано в:
-
containsKeyв интерфейсеMap<K,V> - Требования к реализации:
- Эта реализация перебирает
entrySet()в поисках записи со заданным ключом. Если такая запись найдена, возвращаетсяtrue. Если итерация завершается без нахождения такой записи, возвращаетсяfalse. Обратите внимание, что эта реализация требует линейного времени, пропорционального размеру карты; многие реализации переопределят этот метод. - Параметры:
-
key- ключ, присутствие которого в этой карте необходимо проверить - Возвращает:
-
trueесли эта карта содержит сопоставление для указанного ключа - Исключения:
-
ClassCastException- если ключ имеет неподходящий тип для этой карты (необязательно) -
NullPointerException- если указанный ключ равен null, и эта карта не допускает null-ключей (необязательно)
get
public V get(Object key)
Возвращает значение, которому сопоставлен указанный ключ, или null если эта карта не содержит сопоставления для ключа.
Более формально, если эта карта содержит сопоставление из ключа k со значением v такое, что (key==null ? k==null :
key.equals(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 такое, что (key==null ? k==null : key.equals(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-значений, а указанное отображение содержит 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этого отображения.Коллекция создается в первый раз при вызове этого метода и возвращается во всех последующих вызовах. Синхронизация не выполняется, поэтому существует небольшая вероятность, что несколько вызовов этого метода не вернут одну и ту же коллекцию.
- Возвращает:
- представление коллекции значений, содержащихся в этом отображении
entrySet
public abstract Set<Map.Entry<K,V>> entrySet()
Описание скопировано из интерфейса: Map
Возвращает представление Set отображений, содержащихся в этом отображении. Множество подкрепляется отображением, поэтому изменения в отображении отражаются в множестве и наоборот. Если отображение изменяется во время итерации по множеству (за исключением собственной операции итератора remove, или операции setValue на записи отображения, возвращённой итератором), результаты итерации не определены. Множество поддерживает удаление элементов, что удаляет соответствующее отображение из отображения, через операции Iterator.remove, Set.remove, removeAll, retainAll и clear. Оно не поддерживает операции add или addAll.
- Определено в:
-
entrySetв интерфейсеMap<K,V> - Возвращает:
- представление множества отображений, содержащихся в этом отображении
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.