Класс EnumSet<E extends Enum<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
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static <E extends Enum<E>> |
allOf |
Создаёт множество перечислений, содержащее все элементы указанного типа элементов. |
EnumSet |
clone() |
Возвращает копию этого множества. |
static <E extends Enum<E>> |
complementOf |
Создаёт множество перечислений того же типа элементов, что и указанное множество перечислений, изначально содержащее все элементы этого типа, которые не входят в указанное множество. |
static <E extends Enum<E>> |
copyOf |
Создаёт множество перечислений, инициализированное указанной коллекцией. |
static <E extends Enum<E>> |
copyOf |
Создаёт множество перечислений того же типа элементов, что и указанное множество перечислений, изначально содержащее те же элементы (если они есть). |
static <E extends Enum<E>> |
noneOf |
Создаёт пустое множество перечислений указанного типа элементов. |
static <E extends Enum<E>> |
of |
Создаёт множество перечислений, изначально содержащее указанный элемент. |
static <E extends Enum<E>> |
of |
Создаёт множество перечислений, изначально содержащее указанные элементы. |
static <E extends Enum<E>> |
of |
Создаёт множество перечислений, изначально содержащее указанные элементы. |
static <E extends Enum<E>> |
of |
Создаёт множество перечислений, изначально содержащее указанные элементы. |
static <E extends Enum<E>> |
of |
Создаёт множество перечислений, изначально содержащее указанные элементы. |
static <E extends Enum<E>> |
of |
Создаёт множество перечислений, изначально содержащее указанные элементы. |
static <E extends Enum<E>> |
range |
Создаёт множество перечислений, изначально содержащее все элементы диапазона, определённого двумя указанными граничными элементами. |
Методы, объявленные в классе AbstractSet
equals, hashCode, removeAll
Методы, объявленные в классе AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, toArray, toArray, toString
Методы, объявленные в интерфейсе Collection
parallelStream, removeIf, stream, 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)
- Параметры типа:
E— класс указанного элемента и множества- Параметры:
-
e— элемент, который изначально будет содержаться в этом множестве - Возвращает:
- множество перечислений, изначально содержащее указанный элемент
- Исключения:
-
NullPointerException— еслиeравен null
of
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2)
- Параметры типа:
E— класс элементов-параметров и множества- Параметры:
-
e1— элемент, который изначально будет содержаться в этом множестве -
e2— другой элемент, который изначально будет содержаться в этом множестве - Возвращает:
- множество перечислений, изначально содержащее указанные элементы
- Исключения:
-
NullPointerException— если любой из параметров равен null
of
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3)
- Параметры типа:
E— класс элементов-параметров и множества- Параметры:
-
e1— элемент, который изначально будет содержаться в этом множестве -
e2— другой элемент, который изначально будет содержаться в этом множестве -
e3— другой элемент, который изначально будет содержаться в этом множестве - Возвращает:
- множество перечислений, изначально содержащее указанные элементы
- Исключения:
-
NullPointerException— если любой из параметров равен null
of
public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4)
- Параметры типа:
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)
- Параметры типа:
E— класс элементов-параметров и множества- Параметры:
-
e1— элемент, который изначально будет содержаться в этом множестве -
e2— другой элемент, который изначально будет содержаться в этом множестве -
e3— другой элемент, который изначально будет содержаться в этом множестве -
e4— другой элемент, который изначально будет содержаться в этом множестве -
e5— другой элемент, который изначально будет содержаться в этом множестве - Возвращает:
- множество перечислений, изначально содержащее указанные элементы
- Исключения:
-
NullPointerException— если любой из параметров равен null
of
@SafeVarargs public static <E extends Enum<E>> EnumSet<E> of(E first, E... rest)
- Параметры типа:
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
© 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