Spec-Zone.ru › OpenJDK 25

Класс 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>

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

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

Методы, объявленные в классе Object

finalize, getClass, notify, notifyAll, wait, wait, wait

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

compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll

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

EnumMap

public EnumMap(Class<K> keyType)
Создает пустую карту перечислений с указанным типом ключа.
Параметры:
keyType — объект Class типа ключа для этой карты перечислений
Исключения:
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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/EnumMap.html

Spec-Zone.ru

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