Класс EnumSet<E extends Enum<E>>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
-
- java.util.EnumSet<E>
- Все реализованные интерфейсы:
- Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>
public abstract class EnumSet<E extends Enum<E>> extends AbstractSet<E> implements Cloneable, Serializable
Специализированная реализация Set для использования с перечислимыми типами. Все элементы в множестве enum должны происходить из одного перечислимого типа, который указывается явно или неявно при создании множества. Множества enum внутренне представлены как битовые векторы. Это представление чрезвычайно компактно и эффективно. Производительность по памяти и времени этого класса должна быть достаточно хорошей, чтобы позволить его использование в качестве высококачественной, типизированной альтернативы традиционным int-базированным "битовым флагам". Даже массовые операции (такие как containsAll и retainAll) должны выполняться очень быстро, если их аргумент также является множеством enum.
Итератор, возвращаемый методом iterator, проходит по элементам в их естественном порядке (порядок, в котором объявлены константы enum). Возвращаемый итератор является слабо согласованным: он никогда не выбросит ConcurrentModificationException, и он может или не может показывать эффекты любых изменений в множестве, которые происходят во время итерации.
Нулевые элементы не допускаются. Попытки вставить нулевой элемент приведут к выбросу NullPointerException. Попытки проверить наличие нулевого элемента или удалить его, однако, будут работать правильно.
Как и большинство реализаций коллекций, EnumSet не синхронизирован. Если несколько потоков обращаются к множеству enum одновременно, и хотя бы один из потоков изменяет множество, его следует синхронизировать внешне. Это обычно достигается синхронизацией с каким-либо объектом, который естественным образом инкапсулирует множество enum. Если такого объекта не существует, множество следует "обернуть" с помощью метода Collections.synchronizedSet(java.util.Set<T>). Лучше всего сделать это во время создания, чтобы предотвратить случайный несинхронизированный доступ:
Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));
Примечание по реализации: Все основные операции выполняются за постоянное время. Они, вероятно (хотя и не гарантируется), будут намного быстрее, чем их аналоги HashSet. Даже массовые операции выполняются за постоянное время, если их аргумент также является множеством enum.
Этот класс является членом Java Collections Framework.
- С версии:
- 1.5
- См. также:
EnumMap
Краткое описание методов
| Модификатор и тип | Метод и описание |
|---|---|
static <E extends Enum<E>> |
allOf(Class<E> elementType) Создает множество enum, содержащее все элементы в указанном типе элемента. |
EnumSet<E> |
clone() Возвращает копию этого множества. |
static <E extends Enum<E>> |
complementOf(EnumSet<E> s) Создает множество enum с тем же типом элемента, что и указанное множество enum, изначально содержащее все элементы этого типа, которые не содержатся в указанном множестве. |
static <E extends Enum<E>> |
copyOf(Collection<E> c) Создает множество enum, инициализированное из указанной коллекции. |
static <E extends Enum<E>> |
copyOf(EnumSet<E> s) Создает множество enum с тем же типом элемента, что и указанное множество enum, изначально содержащее те же элементы (если таковые имеются). |
static <E extends Enum<E>> |
noneOf(Class<E> elementType) Создает пустое множество enum с указанным типом элемента. |
static <E extends Enum<E>> |
of(E e) Создает множество enum, изначально содержащее указанный элемент. |
static <E extends Enum<E>> |
of(E first,
E... rest) Создает множество enum, изначально содержащее указанные элементы. |
static <E extends Enum<E>> |
of(E e1,
E e2) Создает множество enum, изначально содержащее указанные элементы. |
static <E extends Enum<E>> |
of(E e1,
E e2,
E e3) Создает множество enum, изначально содержащее указанные элементы. |
static <E extends Enum<E>> |
of(E e1,
E e2,
E e3,
E e4) Создает множество enum, изначально содержащее указанные элементы. |
static <E extends Enum<E>> |
of(E e1,
E e2,
E e3,
E e4,
E e5) Создает множество enum, изначально содержащее указанные элементы. |
static <E extends Enum<E>> |
range(E from,
E to) Создает множество enum, изначально содержащее все элементы в диапазоне, определенном двумя указанными конечными точками. |
Методы, унаследованные от класса java.util.AbstractSet
equals, hashCode, removeAll Методы, унаследованные от класса java.util.AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray, toString Методы, унаследованные от класса java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait Методы, унаследованные от интерфейса java.util.Set
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, spliterator, toArray, toArray Методы, унаследованные от интерфейса java.util.Collection
parallelStream, removeIf, stream Методы, унаследованные от интерфейса java.lang.Iterable
forEach Методы
noneOf
public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType)
Создает пустое множество enum с указанным типом элементов.
- Параметры типа:
-
E- Класс элементов в множестве - Параметры:
-
elementType- Объект класса типа элемента для этого множества enum - Возвращает:
- Пустое множество enum указанного типа.
- Исключения:
-
NullPointerException- еслиelementTypeявляется null
allOf
public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
Создает множество enum, содержащее все элементы указанного типа элемента.
- Параметры типа:
-
E- Класс элементов в множестве - Параметры:
-
elementType- Объект класса типа элемента для этого множества enum - Возвращает:
- Множество enum, содержащее все элементы указанного типа.
- Исключения:
-
NullPointerException- еслиelementTypeявляется null
copyOf
public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s)
Создает множество enum с тем же типом элементов, что и указанное множество enum, первоначально содержащее те же элементы (если таковые имеются).
- Параметры типа:
-
E- Класс элементов в множестве - Параметры:
-
s- множество enum, из которого нужно инициализировать это множество enum - Возвращает:
- Копия указанного множества enum.
- Исключения:
-
NullPointerException- еслиsявляется null
copyOf
public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c)
Создает множество enum, инициализированное из указанной коллекции. Если указанная коллекция является экземпляром EnumSet, этот статический фабричный метод ведет себя идентично copyOf(EnumSet). В противном случае указанная коллекция должна содержать хотя бы один элемент (для определения типа элемента нового множества enum).
- Параметры типа:
-
E- Класс элементов в коллекции - Параметры:
-
c- коллекция, из которой нужно инициализировать это множество enum - Возвращает:
- Множество enum, инициализированное из данной коллекции.
- Исключения:
-
IllegalArgumentException- еслиcне является экземпляромEnumSetи не содержит элементов -
NullPointerException- еслиcявляется null
complementOf
public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)
Создает множество enum с тем же типом элементов, что и указанное множество enum, первоначально содержащее все элементы этого типа, которые не содержатся в указанном множестве.
- Параметры типа:
-
E- Класс элементов в множестве enum - Параметры:
-
s- множество enum, из дополнения которого нужно инициализировать это множество enum - Возвращает:
- Дополнение указанного множества в этом множестве
- Исключения:
-
NullPointerException- еслиsявляется null
of
public static <E extends Enum<E>> EnumSet<E> of(E e)
Создает множество enum, первоначально содержащее указанный элемент. Существуют перегрузки этого метода для инициализации множества enum от одного до пяти элементов. Предоставляется шестая перегрузка, которая использует функцию varargs. Эта перегрузка может использоваться для создания множества enum, первоначально содержащего произвольное количество элементов, но, вероятно, будет работать медленнее, чем перегрузки, которые не используют varargs.
- Параметры типа:
-
E- Класс указанного элемента и множества - Параметры:
-
e- элемент, который это множество должно содержать изначально - Возвращает:
- множество enum, первоначально содержащее указанный элемент
- Исключения:
-
NullPointerException- еслиeявляется null
of
public static <E extends Enum<E>> EnumSet<E> of(E e1,
E e2) Создает множество enum, первоначально содержащее указанные элементы. Существуют перегрузки этого метода для инициализации множества enum от одного до пяти элементов. Предоставляется шестая перегрузка, которая использует функцию varargs. Эта перегрузка может использоваться для создания множества enum, первоначально содержащего произвольное количество элементов, но, вероятно, будет работать медленнее, чем перегрузки, которые не используют varargs.
- Параметры типа:
-
E- Класс элементов параметров и множества - Параметры:
-
e1- элемент, который это множество должно содержать изначально -
e2- другой элемент, который это множество должно содержать изначально - Возвращает:
- множество enum, первоначально содержащее указанные элементы
- Исключения:
-
NullPointerException- если любой из параметров является null
of
public static <E extends Enum<E>> EnumSet<E> of(E e1,
E e2,
E e3) Создает множество enum, первоначально содержащее указанные элементы. Существуют перегрузки этого метода для инициализации множества enum от одного до пяти элементов. Предоставляется шестая перегрузка, которая использует функцию varargs. Эта перегрузка может использоваться для создания множества enum, первоначально содержащего произвольное количество элементов, но, вероятно, будет работать медленнее, чем перегрузки, которые не используют varargs.
- Параметры типа:
-
E- Класс элементов параметров и множества - Параметры:
-
e1- элемент, который это множество должно содержать изначально -
e2- другой элемент, который это множество должно содержать изначально -
e3- другой элемент, который это множество должно содержать изначально - Возвращает:
- множество enum, первоначально содержащее указанные элементы
- Исключения:
-
NullPointerException- если любой из параметров является null
of
public static <E extends Enum<E>> EnumSet<E> of(E e1,
E e2,
E e3,
E e4) Создает множество enum, первоначально содержащее указанные элементы. Существуют перегрузки этого метода для инициализации множества enum от одного до пяти элементов. Предоставляется шестая перегрузка, которая использует функцию varargs. Эта перегрузка может использоваться для создания множества enum, первоначально содержащего произвольное количество элементов, но, вероятно, будет работать медленнее, чем перегрузки, которые не используют varargs.
- Параметры типа:
-
E- Класс элементов параметров и множества - Параметры:
-
e1- элемент, который это множество должно содержать изначально -
e2- другой элемент, который это множество должно содержать изначально -
e3- другой элемент, который это множество должно содержать изначально -
e4- другой элемент, который это множество должно содержать изначально - Возвращает:
- множество enum, первоначально содержащее указанные элементы
- Исключения:
-
NullPointerException- если любой из параметров является null
of
public static <E extends Enum<E>> EnumSet<E> of(E e1,
E e2,
E e3,
E e4,
E e5) Создает множество enum, первоначально содержащее указанные элементы. Существуют перегрузки этого метода для инициализации множества enum от одного до пяти элементов. Предоставляется шестая перегрузка, которая использует функцию varargs. Эта перегрузка может использоваться для создания множества enum, первоначально содержащего произвольное количество элементов, но, вероятно, будет работать медленнее, чем перегрузки, которые не используют varargs.
- Параметры типа:
-
E- Класс элементов параметров и множества - Параметры:
-
e1- элемент, который это множество должно содержать изначально -
e2- другой элемент, который это множество должно содержать изначально -
e3- другой элемент, который это множество должно содержать изначально -
e4- другой элемент, который это множество должно содержать изначально -
e5- другой элемент, который это множество должно содержать изначально - Возвращает:
- множество enum, первоначально содержащее указанные элементы
- Исключения:
-
NullPointerException- если любой из параметров является null
of
@SafeVarargs
public static <E extends Enum<E>> EnumSet<E> of(E first,
E... rest) Создает множество enum, первоначально содержащее указанные элементы. Этот фабричный метод, список параметров которого использует функцию varargs, может использоваться для создания множества enum, первоначально содержащего произвольное количество элементов, но, вероятно, будет работать медленнее, чем перегрузки, которые не используют varargs.
- Параметры типа:
-
E- Класс элементов параметров и множества - Параметры:
-
first- элемент, который множество должно содержать изначально -
rest- остальные элементы, которые множество должно содержать изначально - Возвращает:
- множество enum, первоначально содержащее указанные элементы
- Исключения:
-
NullPointerException- если любой из указанных элементов является null, или еслиrestявляется null
range
public static <E extends Enum<E>> EnumSet<E> range(E from,
E to) Создает множество enum, первоначально содержащее все элементы в диапазоне, определяемом двумя указанными конечными точками. Возвращаемое множество будет содержать сами конечные точки, которые могут быть идентичны, но не должны быть расположены в неправильном порядке.
- Параметры типа:
-
E- Класс элементов параметров и множества - Параметры:
-
from- первый элемент в диапазоне -
to- последний элемент в диапазоне - Возвращает:
- множество enum, первоначально содержащее все элементы в диапазоне, определяемом двумя указанными конечными точками
- Исключения:
-
NullPointerException- еслиfromилиtoявляются null -
IllegalArgumentException- еслиfrom.compareTo(to) > 0
clone
public EnumSet<E> clone()
Возвращает копию этого множества.
© 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.