Класс EnumMap<K extends Enum<K>, V>
- Параметры типа:
K- тип перечисления ключей, поддерживаемых этой картойV- тип сопоставленных значений
- Все реализованные интерфейсы:
Serializable, Cloneable, Map<K,V>
public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K,V> implements Serializable, Cloneable
Map для использования с ключами типа перечисления. Все ключи в карте перечисления должны принадлежать одному типу перечисления, который задаётся явно или неявно при создании карты. Внутреннее представление карт перечислений — массивы. Это представление чрезвычайно компактно и эффективно. В картах перечислений ключи упорядочены в соответствии с их естественным порядком (порядком объявления констант перечисления). Это отражается в итераторах, возвращаемых представлениями коллекций (keySet(), entrySet() и values()).
Итераторы, возвращаемые представлениями коллекций, обладают свойством слабой согласованности: они никогда не выбрасывают ConcurrentModificationException и могут отражать или не отражать изменения карты, произошедшие во время итерации.
Нулевые ключи не допускаются. Попытка вставить нулевой ключ приведёт к выбросу NullPointerException. Однако проверка наличия нулевого ключа или попытка удалить его выполняются корректно. Нулевые значения допускаются.
Как и большинство реализаций коллекций, EnumMap не синхронизирована. Если несколько потоков одновременно обращаются к карте перечислений и хотя бы один из них изменяет карту, доступ к ней следует синхронизировать извне. Обычно для этого синхронизацию выполняют по объекту, который естественным образом инкапсулирует карту перечислений. Если такого объекта нет, карту следует «обернуть» с помощью метода Collections.synchronizedMap(Map). Лучше всего сделать это при создании, чтобы предотвратить случайный несинхронизированный доступ:
Map<EnumKey, V> m
= Collections.synchronizedMap(new EnumMap<EnumKey, V>(...));
Примечание по реализации: все основные операции выполняются за постоянное время. Вероятно (хотя это и не гарантируется), они работают быстрее соответствующих операций HashMap.
Этот класс является частью Java Collections Framework.
- Начиная с версии:
- 1.5
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в классе AbstractMap
AbstractMap.SimpleEntry<K, V>, AbstractMap.SimpleImmutableEntry<K, V> | Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
AbstractMap.SimpleEntry<K, |
Запись, содержащая ключ и значение. |
static class |
AbstractMap.SimpleImmutableEntry<K, |
Неизменяемая запись, содержащая ключ и значение. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
EnumMap |
Создаёт пустую карту перечислений с указанным типом ключей. |
EnumMap |
Создаёт карту перечислений с тем же типом ключей, что и указанная карта перечислений, изначально содержащую те же сопоставления (если они есть). |
EnumMap |
Создаёт карту перечислений, инициализированную указанной картой. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
clear() |
Удаляет все сопоставления из этой карты. |
EnumMap |
clone() |
Возвращает поверхностную копию этой карты перечислений. |
boolean |
containsKey |
Возвращает true, если эта карта содержит сопоставление для указанного ключа. |
boolean |
containsValue |
Возвращает true, если эта карта сопоставляет один или несколько ключей указанному значению. |
Set |
entrySet() |
Возвращает представление Set сопоставлений, содержащихся в этой карте. |
boolean |
equals |
Сравнивает указанный объект с этой картой на предмет равенства. |
V |
get |
Возвращает значение, которому сопоставлен указанный ключ, или null, если в этой карте нет сопоставления для ключа. |
int |
hashCode() |
Возвращает хеш-код этой карты. |
Set |
keySet() |
Возвращает представление Set ключей, содержащихся в этой карте. |
V |
put |
Сопоставляет указанное значение указанному ключу в этой карте. |
void |
putAll |
Копирует все сопоставления из указанной карты в эту карту. |
V |
remove |
Удаляет из этой карты сопоставление для указанного ключа, если оно существует. |
int |
size() |
Возвращает количество сопоставлений ключ-значение в этой карте. |
Collection |
values() |
Возвращает представление Collection значений, содержащихся в этой карте. |
Методы, объявленные в классе AbstractMap
isEmpty, toString | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
isEmpty() |
Возвращает true, если эта карта не содержит сопоставлений ключ-значение. |
String |
toString() |
Возвращает строковое представление этой карты. |
Методы, объявленные в классе 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() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll | Модификатор и тип | Метод | Описание |
|---|---|---|
default V |
compute |
Пытается вычислить сопоставление для указанного ключа и текущего сопоставленного ему значения либо null, если текущего сопоставления нет (необязательная операция). |
default V |
computeIfAbsent |
Если указанному ключу ещё не сопоставлено значение (или ему сопоставлено null), пытается вычислить его с помощью заданной функции сопоставления и добавляет его в эту карту, если результат не равен null (необязательная операция). |
default V |
computeIfPresent |
Если для указанного ключа имеется ненулевое значение, пытается вычислить новое сопоставление, используя ключ и текущее сопоставленное ему значение (необязательная операция). |
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 |
Заменяет значение каждой записи результатом вызова заданной функции для этой записи, пока не будут обработаны все записи или функция не выбросит исключение (необязательная операция). |
Подробное описание конструкторов
EnumMap
public EnumMap(Class<K> keyType)
- Параметры:
-
keyType- объект класса типа ключей для этой карты перечислений - Исключения:
-
NullPointerException- еслиkeyTypeравно null
EnumMap
public EnumMap(EnumMap<K, ? extends V> m)
- Параметры:
-
m- карта перечислений, из которой инициализируется эта карта перечислений - Исключения:
-
NullPointerException- еслиmравно null
EnumMap
public EnumMap(Map<K, ? extends V> m)
EnumMap, этот конструктор действует так же, как EnumMap(EnumMap). В противном случае указанная карта должна содержать как минимум одно сопоставление (чтобы определить тип ключей новой карты перечислений).- Параметры:
-
m- карта, из которой инициализируется эта карта перечислений - Исключения:
-
IllegalArgumentException- еслиmне является экземпляромEnumMapи не содержит сопоставлений -
NullPointerException- еслиmравно null
Подробное описание методов
size
containsValue
public boolean containsValue(Object value)
true, если эта карта сопоставляет один или несколько ключей указанному значению.- Переопределяет:
-
containsValueв интерфейсеMap<K extends Enum<K>, V> - Переопределяет:
-
containsValueв классеAbstractMap<K extends Enum<K>, V> - Параметры:
-
value- значение, наличие которого в этой карте проверяется - Возвращает:
-
true, если эта карта сопоставляет один или несколько ключей этому значению
containsKey
public boolean containsKey(Object key)
true, если эта карта содержит сопоставление для указанного ключа.- Переопределяет:
-
containsKeyв интерфейсеMap<K extends Enum<K>, V> - Переопределяет:
-
containsKeyв классеAbstractMap<K extends Enum<K>, V> - Параметры:
-
key- ключ, наличие которого в этой карте проверяется - Возвращает:
-
true, если эта карта содержит сопоставление для указанного ключа
get
public V get(Object key)
null, если в этой карте нет сопоставления для ключа. Точнее, если эта карта содержит сопоставление ключа k со значением v, такое что (key == k), этот метод возвращает v; в противном случае он возвращает null. (Такое сопоставление может быть не более чем одно.)
Возвращаемое значение null не обязательно означает, что карта не содержит сопоставления для ключа; возможно также, что карта явно сопоставляет ключу null. Операцию containsKey можно использовать, чтобы различить эти два случая.
- Переопределяет:
-
getв интерфейсеMap<K extends Enum<K>, V> - Переопределяет:
-
getв классеAbstractMap<K extends Enum<K>, V> - Параметры:
-
key- ключ, сопоставленное значение которого нужно вернуть - Возвращает:
- значение, которому сопоставлен указанный ключ, или
null, если в этой карте нет сопоставления для ключа
put
public V put(K key, V value)
- Переопределяет:
-
putв интерфейсеMap<K extends Enum<K>, V> - Переопределяет:
-
putв классеAbstractMap<K extends Enum<K>, V> - Параметры:
-
key- ключ, которому сопоставляется указанное значение -
value- значение, сопоставляемое указанному ключу - Возвращает:
- предыдущее значение, сопоставленное указанному ключу, или
null, если для ключа не было сопоставления. (Возвращаемое значениеnullтакже может означать, что ранее карта сопоставляла указанному ключуnull.) - Исключения:
-
NullPointerException- если указанный ключ равен null
remove
public V remove(Object key)
- Переопределяет:
-
removeв интерфейсеMap<K extends Enum<K>, V> - Переопределяет:
-
removeв классеAbstractMap<K extends Enum<K>, V> - Параметры:
-
key- ключ, сопоставление для которого нужно удалить из карты - Возвращает:
- предыдущее значение, сопоставленное указанному ключу, или
null, если для ключа не было записи. (Возвращаемое значениеnullтакже может означать, что ранее карта сопоставляла указанному ключуnull.)
putAll
public void putAll(Map<? extends K, ? extends V> m)
- Переопределяет:
-
putAllв интерфейсеMap<K extends Enum<K>, V> - Переопределяет:
-
putAllв классеAbstractMap<K extends Enum<K>, V> - Параметры:
-
m- сопоставления, которые нужно сохранить в этой карте - Исключения:
-
NullPointerException- если указанная карта равна null или один либо несколько её ключей равны null
clear
keySet
public Set<K> keySet()
Set ключей, содержащихся в этой карте. Возвращаемое множество соответствует общему контракту, описанному в Map.keySet(). Итератор множества возвращает ключи в естественном порядке (порядке объявления констант перечисления).values
public Collection<V> values()
Collection значений, содержащихся в этой карте. Возвращаемая коллекция соответствует общему контракту, описанному в Map.values(). Итератор коллекции возвращает значения в порядке следования соответствующих им ключей в карте, то есть в естественном порядке (порядке объявления констант перечисления).entrySet
public Set<Map.Entry<K,V>> entrySet()
Set сопоставлений, содержащихся в этой карте. Возвращаемое множество соответствует общему контракту, описанному в Map.keySet(). Итератор множества возвращает сопоставления в порядке следования их ключей в карте, то есть в естественном порядке (порядке объявления констант перечисления).equals
public boolean equals(Object o)
true, если указанный объект также является картой и обе карты представляют одни и те же сопоставления, как определено контрактом Map.equals(Object).hashCode
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.