Класс 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.
- С тех пор:
- 1.2
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
AbstractMap.SimpleEntry<K, |
Запись Entry, содержащая ключ и значение. |
static class |
AbstractMap.SimpleImmutableEntry<K, |
Неизменяемая запись Entry, содержащая ключ и значение. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Единственный конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
clear() |
Удаляет все сопоставления из этой карты (дополнительная операция). |
protected Object |
clone() |
Возвращает неглубокую копию этого экземпляра AbstractMap: сами ключи и значения не клонируются. |
boolean |
containsKey |
Возвращает true , если эта карта содержит сопоставление для указанного ключа. |
boolean |
containsValue |
Возвращает true , если эта карта отображает один или несколько ключей на указанное значение. |
boolean |
equals |
Сравнивает указанный объект с этой картой на предмет равенства. |
V |
get |
Возвращает значение, которому сопоставлен указанный ключ, или null , если эта карта не содержит сопоставления для ключа. |
int |
hashCode() |
Возвращает хэш-код для этой карты. |
boolean |
isEmpty() |
Возвращает true , если эта карта не содержит сопоставлений ключ-значение. |
Set<K> |
keySet() |
Возвращает представление Set ключей, содержащихся в этой карте. |
V |
put |
Связывает указанное значение с указанным ключом в этой карте (дополнительная операция). |
void |
putAll |
Копирует все сопоставления из указанной карты в эту карту (дополнительная операция). |
V |
remove |
Удаляет сопоставление для ключа из этой карты, если оно присутствует (дополнительная операция). |
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 в указанной карте. Поведение этой операции не определено, если указанная карта модифицируется во время выполнения операции.- Specified by:
-
putAllв интерфейсеMap<K,V> - Implementation Requirements:
- Эта реализация перебирает коллекцию
entrySet()указанной карты и вызывает операциюputэтой карты один раз для каждой записи, возвращаемой итерацией.Обратите внимание, что эта реализация выбрасывает исключение
UnsupportedOperationException, если эта карта не поддерживает операциюput, а указанная карта не пуста. - Parameters:
-
m- сопоставления, которые необходимо сохранить в этой карте - Throws:
-
UnsupportedOperationException- если операцияputAllне поддерживается этой картой -
ClassCastException- если класс ключа или значения в указанной карте препятствует его сохранению в этой карте -
NullPointerException- если указанная карта равна 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()
Set ключей, содержащихся в этой карте. Множество поддерживается картой, поэтому изменения в карте отражаются в множестве и наоборот. Если карта изменяется во время итерации по множеству (кроме операции самого итератора 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()
Collection значений, содержащихся в этой карте. Коллекция поддерживается картой, поэтому изменения в карте отражаются в коллекции и наоборот. Если карта изменяется во время итерации по коллекции (кроме операции самого итератора 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:
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:
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:
© 1993, 2021, 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/17/docs/api/java.base/java/util/AbstractMap.html