EnumSet is a collection class specially designed for enumeration. All elements in EnumSet must be enumeration values of the specified enumeration type. , the enumeration type is specified explicitly or implicitly when creating the EnumSet.
#The set elements of EnumSet are also ordered. EnumSet determines the order of set elements based on the order in which the enumeration values are defined within the Enum class.
EnumSet is stored internally in the form of a bit vector. This storage form is very compact and efficient, so the EnumSet object occupies very little memory and runs very efficiently. Especially when performing batch operations (such as calling the containsAll() and retainAll() methods), if the parameters are also EnumSet collections, the execution speed of the batch operation is also very fast.
The EnumSet class does not expose any constructor to create instances of this class, and the program should create EnumSet objects through the class methods it provides.
The EnumSet collection does not allow adding null elements. If you try to insert a null element, EnumSet will throw a NullPointerException exception.
If you just want to determine whether the EnumSet contains null elements or try to delete null elements, no exception will be thrown. Just the deletion operation will return false because no null elements are deleted.
Method introduction:
EnumSet allOf(Class elementType): Create an array containing the specified EnumSet collection of all enumeration values in the enumeration class.
EnumSet complementOf(EnumSet e): Create an EnumSet collection whose element type is the same as the element type in the specified EnumSet. The new EnumSet collection contains all the elements that the original EnumSet collection does not Contains the remaining enumeration values of this type of enumeration class (that is, the sum of the collection elements of the new EnumSet collection and the original EnumSet collection is all the enumeration values of the enumeration class).
EnumSet copyOf(Collection c): Use an ordinary collection to create an EnumSet collection.
EnumSet copyOf(EnumSet e): Create an EnumSet collection with the same element type and the same collection elements of the specified EnumSet.
EnumSet noneOf(Class elementType): Create an empty EnumSet whose element type is the specified enumeration type.
EnumSet of(E first,E…rest): Create an EnumSet collection containing one or more enumeration values, passing in multiple enumerations Values must belong to the same enumeration class.
EnumSet range(E from,E to): Create an EnumSet set containing all enumeration values in the range from the from enumeration value to the to enumeration value. .
Sample code:
package com.collection; import java.util.EnumSet; public class EnumSetTest { public static void main(String[] args) { //1.创建一个包含Session(枚举类)里所有枚举值的EnumSet集合 EnumSet e1 = EnumSet.allOf(Session.class); System.out.println(e1);//[SPRING, SUMMER, FAIL, WINTER] //2.创建一个空EnumSet EnumSet e2 = EnumSet.noneOf(Session.class); System.out.println(e2);//[] //3. add()空EnumSet集合中添加枚举元素 e2.add(Session.SPRING); e2.add(Session.SUMMER); System.out.println(e2);//[SPRING, SUMMER] //4. 以指定枚举值创建EnumSet集合 EnumSet e3 = EnumSet.of(Session.SPRING,Session.FAIL); System.out.println(e3);//[SPRING, FAIL] //5.创建一个包含从from枚举值到to枚举值范围内所有枚举值的EnumSet集合。 EnumSet e4 = EnumSet.range(Session.SPRING,Session.FAIL); System.out.println(e4);//[SPRING, SUMMER, FAIL] //6.创建一个其元素类型与指定EnumSet里元素类型相同的EnumSet集合, // 新EnumSet集合包含原EnumSet集合所不包含的枚举值 EnumSet e5 = EnumSet.complementOf(e4); System.out.println(e5);//[WINTER] } } //创建一个枚举 enum Session{ SPRING, SUMMER, FAIL, WINTER }
Note:
In addition, you can also copy all the items in another EnumSet collection elements to create a new EnumSet collection, or copy all elements from another Collection to create a new EnumSet collection.
Example:
Collection c = new HashSet(); c.clear(); c.add(Session.SPRING); c.add(Session.FAIL); EnumSet e6 = EnumSet.copyOf(c); System.out.println(e6);//[SPRING, FAIL]
Note: When copying all elements in the Collection set to create a new EnumSet collection, all elements in the Collection set must be the same enumeration Enumeration value of the enumeration class.
Error example:
c.add("Java"); e6 = EnumSet.copyOf(c);//java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum
Things won are done; joy’s soul lies in the doing.
Getting is completion, the essence of happiness lies in the process.
The above is the detailed content of A brief discussion on EnumSet of Java collections. For more information, please follow other related articles on the PHP Chinese website!