Spec-Zone.ru › OpenJDK 27

Класс EnumMap<K extends Enum<K>, V>

java.lang.Object
java.util.AbstractMap<K,V>
java.util.EnumMap<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
См. также:
  • EnumSet
  • Сериализованная форма

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в классе AbstractMap

AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
Модификатор и тип Класс Описание
static class  AbstractMap.SimpleEntry<K,V>
Запись, содержащая ключ и значение.
static class  AbstractMap.SimpleImmutableEntry<K,V>
Неизменяемая запись, содержащая ключ и значение.

Вложенные классы/интерфейсы, объявленные в интерфейсе Map

Map.Entry<K,V>
Модификатор и тип Интерфейс Описание
static interface  Map.Entry<K,V>
Запись карты (пара ключ-значение).

Краткое описание конструкторов

Конструктор Описание
EnumMap(Class<K> keyType)
Создаёт пустую карту перечислений с указанным типом ключей.
EnumMap(EnumMap<K, ? extends V> m)
Создаёт карту перечислений с тем же типом ключей, что и указанная карта перечислений, изначально содержащую те же сопоставления (если они есть).
EnumMap(Map<K, ? extends V> m)
Создаёт карту перечислений, инициализированную указанной картой.

Краткое описание методов

Модификатор и тип Метод Описание
void clear()
Удаляет все сопоставления из этой карты.
EnumMap<K,V> clone()
Возвращает поверхностную копию этой карты перечислений.
boolean containsKey(Object key)
Возвращает true, если эта карта содержит сопоставление для указанного ключа.
boolean containsValue(Object value)
Возвращает true, если эта карта сопоставляет один или несколько ключей указанному значению.
Set<Map.Entry<K,V>> entrySet()
Возвращает представление Set сопоставлений, содержащихся в этой карте.
boolean equals(Object o)
Сравнивает указанный объект с этой картой на предмет равенства.
V get(Object key)
Возвращает значение, которому сопоставлен указанный ключ, или null, если в этой карте нет сопоставления для ключа.
int hashCode()
Возвращает хеш-код этой карты.
Set<K> keySet()
Возвращает представление Set ключей, содержащихся в этой карте.
V put(K key, V value)
Сопоставляет указанное значение указанному ключу в этой карте.
void putAll(Map<? extends K, ? extends V> m)
Копирует все сопоставления из указанной карты в эту карту.
V remove(Object key)
Удаляет из этой карты сопоставление для указанного ключа, если оно существует.
int size()
Возвращает количество сопоставлений ключ-значение в этой карте.
Collection<V> 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(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Методы, объявленные в интерфейсе Map

compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
Модификатор и тип Метод Описание
default V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Пытается вычислить сопоставление для указанного ключа и текущего сопоставленного ему значения либо null, если текущего сопоставления нет (необязательная операция).
default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
Если указанному ключу ещё не сопоставлено значение (или ему сопоставлено null), пытается вычислить его с помощью заданной функции сопоставления и добавляет его в эту карту, если результат не равен null (необязательная операция).
default V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Если для указанного ключа имеется ненулевое значение, пытается вычислить новое сопоставление, используя ключ и текущее сопоставленное ему значение (необязательная операция).
default void forEach(BiConsumer<? super K, ? super V> action)
Выполняет заданное действие для каждой записи в этой карте, пока не будут обработаны все записи или действие не выбросит исключение.
default V getOrDefault(Object key, V defaultValue)
Возвращает значение, которому сопоставлен указанный ключ, или defaultValue, если в этой карте нет сопоставления для ключа.
default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
Если указанному ключу ещё не сопоставлено значение или ему сопоставлено null, сопоставляет ему заданное ненулевое значение (необязательная операция).
default V putIfAbsent(K key, V value)
Если указанному ключу ещё не сопоставлено значение (или ему сопоставлено null), сопоставляет ему заданное значение и возвращает null; в противном случае возвращает текущее значение (необязательная операция).
default boolean remove(Object key, Object value)
Удаляет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция).
default V replace(K key, V value)
Заменяет запись для указанного ключа, только если в данный момент ему сопоставлено какое-либо значение (необязательная операция).
default boolean replace(K key, V oldValue, V newValue)
Заменяет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция).
default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function)
Заменяет значение каждой записи результатом вызова заданной функции для этой записи, пока не будут обработаны все записи или функция не выбросит исключение (необязательная операция).

Подробное описание конструкторов

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

public int size()
Возвращает количество сопоставлений ключ-значение в этой карте.
Переопределяет:
size в интерфейсе Map<K extends Enum<K>, V>
Переопределяет:
size в классе AbstractMap<K extends Enum<K>, V>
Возвращает:
количество сопоставлений ключ-значение в этой карте

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

public void clear()
Удаляет все сопоставления из этой карты.
Переопределяет:
clear в интерфейсе Map<K extends Enum<K>, V>
Переопределяет:
clear в классе AbstractMap<K extends Enum<K>, V>

keySet

public Set<K> keySet()
Возвращает представление Set ключей, содержащихся в этой карте. Возвращаемое множество соответствует общему контракту, описанному в Map.keySet(). Итератор множества возвращает ключи в естественном порядке (порядке объявления констант перечисления).
Переопределяет:
keySet в интерфейсе Map<K extends Enum<K>, V>
Переопределяет:
keySet в классе AbstractMap<K extends Enum<K>, V>
Возвращает:
представление множества ключей, содержащихся в этой карте перечислений

values

public Collection<V> values()
Возвращает представление Collection значений, содержащихся в этой карте. Возвращаемая коллекция соответствует общему контракту, описанному в Map.values(). Итератор коллекции возвращает значения в порядке следования соответствующих им ключей в карте, то есть в естественном порядке (порядке объявления констант перечисления).
Переопределяет:
values в интерфейсе Map<K extends Enum<K>, V>
Переопределяет:
values в классе AbstractMap<K extends Enum<K>, V>
Возвращает:
представление коллекции значений, содержащихся в этой карте

entrySet

public Set<Map.Entry<K,V>> entrySet()
Возвращает представление Set сопоставлений, содержащихся в этой карте. Возвращаемое множество соответствует общему контракту, описанному в Map.keySet(). Итератор множества возвращает сопоставления в порядке следования их ключей в карте, то есть в естественном порядке (порядке объявления констант перечисления).
Переопределяет:
entrySet в интерфейсе Map<K extends Enum<K>, V>
Возвращает:
представление множества сопоставлений, содержащихся в этой карте перечислений

equals

public boolean equals(Object o)
Сравнивает указанный объект с этой картой на предмет равенства. Возвращает true, если указанный объект также является картой и обе карты представляют одни и те же сопоставления, как определено контрактом Map.equals(Object).
Переопределяет:
equals в интерфейсе Map<K extends Enum<K>, V>
Переопределяет:
equals в классе AbstractMap<K extends Enum<K>, V>
Параметры:
o - объект, который сравнивается на равенство с этой картой
Возвращает:
true, если указанный объект равен этой карте
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает хеш-код этой карты. Хеш-код карты определяется как сумма хеш-кодов всех её записей.
Переопределяет:
hashCode в интерфейсе Map<K extends Enum<K>, V>
Переопределяет:
hashCode в классе AbstractMap<K extends Enum<K>, V>
Возвращает:
хеш-код этой карты
См. также:
  • Map.Entry.hashCode()
  • Object.equals(Object)
  • Set.equals(Object)

clone

public EnumMap<K,V> clone()
Возвращает поверхностную копию этой карты перечислений. Сами значения не клонируются.
Переопределяет:
clone в классе AbstractMap<K extends Enum<K>, V>
Возвращает:
поверхностную копию этой карты перечислений
См. также:
  • Cloneable

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API