Класс 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.

С момента:
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)

Создаёт набор перечислений, первоначально содержащий все элементы в диапазоне, определённом двумя указанными конечными точками.

Методы, объявленные в классе 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

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

forEach

Методы, объявленные в интерфейсе java.util.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 - объект класса типа элемента для этого множества перечислений
Возвращает:
Пустое множество перечислений указанного типа.
Исключения:
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)

Создает множество перечислений, первоначально содержащее указанный элемент. Существуют перегрузки этого метода для инициализации множества перечислений от одного до пяти элементов. Предоставляется шестая перегрузка, которая использует функцию 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

© 1993, 2020, 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/11/docs/api/java.base/java/util/EnumSet.html

Spec-Zone .ru
спецификации, руководства, описания, API