Класс EnumSet<E extends Enum<E>>
- Все реализованные интерфейсы:
-
Serializable,Cloneable,Iterable<E>,Collection<E>,Set<E>
public abstract 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<E> |
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, 2021, 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/17/docs/api/java.base/java/util/EnumSet.html