Spec-Zone.ru › OpenJDK 25

Класс EnumSet<E extends Enum<E>>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractSet<E>
java.util.EnumSet<E>
Параметры типа:
E — тип перечисления элементов, хранящихся в этом множестве
Все реализуемые интерфейсы:
Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>
public abstract sealed class EnumSet<E extends Enum<E>> extends AbstractSet<E> implements Cloneable, Serializable
Специализированная реализация Set для использования с типами перечислений. Все элементы множества перечислений должны принадлежать одному типу перечисления, который задаётся явно или неявно при создании множества. Множества перечислений внутри представлены в виде битовых векторов. Такое представление чрезвычайно компактно и эффективно. Производительность этого класса по времени и памяти должна быть достаточной для использования его в качестве высококачественной типобезопасной альтернативы традиционным «битовым флагам» на основе int. Даже групповые операции (такие как containsAll и retainAll) должны выполняться очень быстро, если их аргументом также является множество перечислений.

Итератор, возвращаемый методом iterator, обходит элементы в их естественном порядке (порядке объявления констант перечисления). Возвращаемый итератор является слабо согласованным: он никогда не выбрасывает исключение ConcurrentModificationException и может как отражать, так и не отражать изменения множества, произошедшие во время итерации.

Элементы null не допускаются. Попытки вставить элемент null приведут к выбросу исключения NullPointerException. Однако попытки проверить наличие элемента null или удалить его будут обработаны корректно.

Как и большинство реализаций коллекций, EnumSet не синхронизирован. Если несколько потоков одновременно обращаются к множеству перечислений и хотя бы один из потоков изменяет его, необходимо обеспечить внешнюю синхронизацию. Обычно для этого синхронизируются по объекту, который естественным образом содержит множество перечислений. Если такого объекта нет, множество следует «обернуть» с помощью метода Collections.synchronizedSet(Set). Лучше всего сделать это при создании, чтобы предотвратить случайный доступ без синхронизации:

Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));

Примечание по реализации: все базовые операции выполняются за постоянное время. Вероятно (хотя и не гарантированно), они значительно быстрее соответствующих операций класса HashSet. Даже групповые операции выполняются за постоянное время, если их аргументом также является множество перечислений.

Этот класс входит в состав Java Collections Framework.

Начиная с версии:
1.5
См. также:
  • EnumMap
  • Сериализованная форма

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

Модификатор и тип Метод Описание
static <E extends Enum<E>>
EnumSet<E>
allOf(Class<E> elementType)
Создаёт множество перечислений, содержащее все элементы указанного типа элементов.
EnumSet<E> clone()
Возвращает копию этого множества.
static <E extends Enum<E>>
EnumSet<E>
complementOf(EnumSet<E> s)
Создаёт множество перечислений того же типа элементов, что и указанное множество перечислений, изначально содержащее все элементы этого типа, которые не входят в указанное множество.
static <E extends Enum<E>>
EnumSet<E>
copyOf(Collection<E> c)
Создаёт множество перечислений, инициализированное указанной коллекцией.
static <E extends Enum<E>>
EnumSet<E>
copyOf(EnumSet<E> s)
Создаёт множество перечислений того же типа элементов, что и указанное множество перечислений, изначально содержащее те же элементы (если они есть).
static <E extends Enum<E>>
EnumSet<E>
noneOf(Class<E> elementType)
Создаёт пустое множество перечислений указанного типа элементов.
static <E extends Enum<E>>
EnumSet<E>
of(E e)
Создаёт множество перечислений, изначально содержащее указанный элемент.
static <E extends Enum<E>>
EnumSet<E>
of(E e1, E e2)
Создаёт множество перечислений, изначально содержащее указанные элементы.
static <E extends Enum<E>>
EnumSet<E>
of(E first, E... rest)
Создаёт множество перечислений, изначально содержащее указанные элементы.
static <E extends Enum<E>>
EnumSet<E>
of(E e1, E e2, E e3)
Создаёт множество перечислений, изначально содержащее указанные элементы.
static <E extends Enum<E>>
EnumSet<E>
of(E e1, E e2, E e3, E e4)
Создаёт множество перечислений, изначально содержащее указанные элементы.
static <E extends Enum<E>>
EnumSet<E>
of(E e1, E e2, E e3, E e4, E e5)
Создаёт множество перечислений, изначально содержащее указанные элементы.
static <E extends Enum<E>>
EnumSet<E>
range(E from, E to)
Создаёт множество перечислений, изначально содержащее все элементы диапазона, определённого двумя указанными граничными элементами.

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

equals, hashCode, removeAll

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

add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, toArray, toArray, toString

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

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

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

parallelStream, removeIf, stream, toArray

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

forEach

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

add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, spliterator, toArray, toArray

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

noneOf

public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType)
Создаёт пустое множество перечислений указанного типа элементов.
Параметры типа:
E — класс элементов множества
Параметры:
elementType — объект Class типа элементов этого множества перечислений
Возвращает:
Пустое множество перечислений указанного типа.
Исключения:
NullPointerException — если elementType равен null

allOf

public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
Создаёт множество перечислений, содержащее все элементы указанного типа элементов.
Параметры типа:
E — класс элементов множества
Параметры:
elementType — объект Class типа элементов этого множества перечислений
Возвращает:
Множество перечислений, содержащее все элементы указанного типа.
Исключения:
NullPointerException — если elementType равен null

copyOf

public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s)
Создаёт множество перечислений того же типа элементов, что и указанное множество перечислений, изначально содержащее те же элементы (если они есть).
Параметры типа:
E — класс элементов множества
Параметры:
s — множество перечислений, из которого инициализируется это множество перечислений
Возвращает:
Копию указанного множества перечислений.
Исключения:
NullPointerException — если s равен null

copyOf

public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c)
Создаёт множество перечислений, инициализированное указанной коллекцией. Если указанная коллекция является экземпляром EnumSet, этот статический фабричный метод ведёт себя так же, как copyOf(EnumSet). В противном случае указанная коллекция должна содержать хотя бы один элемент (чтобы определить тип элементов нового множества перечислений).
Параметры типа:
E — класс элементов коллекции
Параметры:
c — коллекция, из которой инициализируется это множество перечислений
Возвращает:
Множество перечислений, инициализированное указанной коллекцией.
Исключения:
IllegalArgumentException — если c не является экземпляром EnumSet и не содержит элементов
NullPointerException — если c равен null

complementOf

public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)
Создаёт множество перечислений того же типа элементов, что и указанное множество перечислений, изначально содержащее все элементы этого типа, которые не входят в указанное множество.
Параметры типа:
E — класс элементов множества перечислений
Параметры:
s — множество перечислений, дополнение которого используется для инициализации этого множества перечислений
Возвращает:
Дополнение указанного множества в этом множестве
Исключения:
NullPointerException — если s равен null

of

public static <E extends Enum<E>> EnumSet<E> of(E e)
Создаёт множество перечислений, изначально содержащее указанный элемент. Для инициализации множества перечислений от одного до пяти элементов существуют перегруженные варианты этого метода. Также предусмотрен шестой вариант с использованием функции varargs. Этот вариант можно использовать для создания множества перечислений с произвольным количеством элементов, однако он, вероятно, будет работать медленнее, чем варианты без varargs.
Параметры типа:
E — класс указанного элемента и множества
Параметры:
e — элемент, который изначально будет содержаться в этом множестве
Возвращает:
множество перечислений, изначально содержащее указанный элемент
Исключения:
NullPointerException — если e равен null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2)
Создаёт множество перечислений, изначально содержащее указанные элементы. Для инициализации множества перечислений от одного до пяти элементов существуют перегруженные варианты этого метода. Также предусмотрен шестой вариант с использованием функции varargs. Этот вариант можно использовать для создания множества перечислений с произвольным количеством элементов, однако он, вероятно, будет работать медленнее, чем варианты без varargs.
Параметры типа:
E — класс элементов-параметров и множества
Параметры:
e1 — элемент, который изначально будет содержаться в этом множестве
e2 — другой элемент, который изначально будет содержаться в этом множестве
Возвращает:
множество перечислений, изначально содержащее указанные элементы
Исключения:
NullPointerException — если любой из параметров равен null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3)
Создаёт множество перечислений, изначально содержащее указанные элементы. Для инициализации множества перечислений от одного до пяти элементов существуют перегруженные варианты этого метода. Также предусмотрен шестой вариант с использованием функции varargs. Этот вариант можно использовать для создания множества перечислений с произвольным количеством элементов, однако он, вероятно, будет работать медленнее, чем варианты без varargs.
Параметры типа:
E — класс элементов-параметров и множества
Параметры:
e1 — элемент, который изначально будет содержаться в этом множестве
e2 — другой элемент, который изначально будет содержаться в этом множестве
e3 — другой элемент, который изначально будет содержаться в этом множестве
Возвращает:
множество перечислений, изначально содержащее указанные элементы
Исключения:
NullPointerException — если любой из параметров равен null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4)
Создаёт множество перечислений, изначально содержащее указанные элементы. Для инициализации множества перечислений от одного до пяти элементов существуют перегруженные варианты этого метода. Также предусмотрен шестой вариант с использованием функции varargs. Этот вариант можно использовать для создания множества перечислений с произвольным количеством элементов, однако он, вероятно, будет работать медленнее, чем варианты без varargs.
Параметры типа:
E — класс элементов-параметров и множества
Параметры:
e1 — элемент, который изначально будет содержаться в этом множестве
e2 — другой элемент, который изначально будет содержаться в этом множестве
e3 — другой элемент, который изначально будет содержаться в этом множестве
e4 — другой элемент, который изначально будет содержаться в этом множестве
Возвращает:
множество перечислений, изначально содержащее указанные элементы
Исключения:
NullPointerException — если любой из параметров равен null

of

public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4, E e5)
Создаёт множество перечислений, изначально содержащее указанные элементы. Для инициализации множества перечислений от одного до пяти элементов существуют перегруженные варианты этого метода. Также предусмотрен шестой вариант с использованием функции varargs. Этот вариант можно использовать для создания множества перечислений с произвольным количеством элементов, однако он, вероятно, будет работать медленнее, чем варианты без varargs.
Параметры типа:
E — класс элементов-параметров и множества
Параметры:
e1 — элемент, который изначально будет содержаться в этом множестве
e2 — другой элемент, который изначально будет содержаться в этом множестве
e3 — другой элемент, который изначально будет содержаться в этом множестве
e4 — другой элемент, который изначально будет содержаться в этом множестве
e5 — другой элемент, который изначально будет содержаться в этом множестве
Возвращает:
множество перечислений, изначально содержащее указанные элементы
Исключения:
NullPointerException — если любой из параметров равен null

of

@SafeVarargs public static <E extends Enum<E>> EnumSet<E> of(E first, E... rest)
Создаёт множество перечислений, изначально содержащее указанные элементы. Эта фабрика, в списке параметров которой используется функция varargs, позволяет создать множество перечислений с произвольным количеством элементов, однако, вероятно, она будет работать медленнее, чем варианты без varargs.
Параметры типа:
E — класс элементов-параметров и множества
Параметры:
first — элемент, который изначально будет содержаться в множестве
rest — остальные элементы, которые изначально будут содержаться в множестве
Возвращает:
множество перечислений, изначально содержащее указанные элементы
Исключения:
NullPointerException — если любой из указанных элементов равен null или rest равен null

range

public static <E extends Enum<E>> EnumSet<E> range(E from, E to)
Создаёт множество перечислений, изначально содержащее все элементы диапазона, определённого двумя указанными граничными элементами. Возвращаемое множество будет содержать сами граничные элементы; они могут совпадать, но не должны быть расположены в неправильном порядке.
Параметры типа:
E — класс элементов-параметров и множества
Параметры:
from — первый элемент диапазона
to — последний элемент диапазона
Возвращает:
множество перечислений, изначально содержащее все элементы диапазона, определённого двумя указанными граничными элементами
Исключения:
NullPointerException — если from или to равны null
IllegalArgumentException — если from.compareTo(to) > 0

clone

public EnumSet<E> clone()
Возвращает копию этого множества.
Переопределяет:
clone в классе Object
Возвращает:
копию этого множества
См. также:
  • 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/EnumSet.html

Spec-Zone.ru

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