Класс 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(java.util.Set<T>). Это лучше всего сделать на этапе создания, чтобы предотвратить случайный несинхронизированный доступ:
Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));
Примечание об реализации: все основные операции выполняются за константное время. Вероятно (хотя и не гарантируется), что они будут значительно быстрее, чем их аналоги из HashSet. Даже массовые операции выполняются за константное время, если их аргументом также является множество перечислений.
Этот класс является членом Java Collections Framework.
- Since:
- 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 |
Создаёт множество перечислений, изначально содержащее все элементы в диапазоне, определяемом двумя указанными конечными точками. |
Методы, объявленные в классе java.util.AbstractSet
equals, hashCode, removeAll
Методы, объявленные в классе java.util.AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, toArray, toArray, toString
Методы, объявленные в классе java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.util.Collection
parallelStream, removeIf, stream, toArray
Краткое описание методов
noneOf
public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType)
- Параметры типа:
E- Класс элементов в множестве- Параметры:
-
elementType- Объект класса типа элемента для этого множества перечислений - Возвращает:
- Пустое множество перечислений указанного типа.
- Исключения:
-
NullPointerException- еслиelementTypeимеет значение null
allOf
public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
- Параметры типа:
E- Класс элементов в множестве- Параметры:
-
elementType- Объект класса типа элемента для этого множества перечислений - Возвращает:
- Множество перечислений, содержащее все элементы указанного типа.
- Исключения:
-
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)
- Type Parameters:
E- Класс элементов параметра и множества- Parameters:
-
from- первый элемент в диапазоне -
to- последний элемент в диапазоне - Returns:
- множество перечислений, изначально содержащее все элементы в диапазоне, определённом двумя указанными конечными точками
- Throws:
-
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/EnumSet.html