Класс EnumSet<E extends Enum<E>>
- Type Parameters:
-
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)
- Параметры типа:
-
E- Класс элементов параметра и множества - Параметры:
-
from- первый элемент в диапазоне -
to- последний элемент в диапазоне - Возвращаемое значение:
- множество перечислений, первоначально содержащее все элементы в диапазоне, определенном двумя указанными конечными точками
- Исключения:
-
NullPointerException- еслиfromилиtoравны null -
IllegalArgumentException- еслиfrom.compareTo(to) > 0
клонировать
public EnumSet<E> clone()
- Переопределяет:
-
cloneв классеObject - Возвращает:
- копию этого набора
- См. также:
© 1993, 2023, 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/21/docs/api/java.base/java/util/EnumSet.html