- 继承图
- 为什么使用
EnumSet EnumSet中的方法java.util.Set继承的方法:">从接口java.util.Set继承的方法:
Java EnumSet类实现Set并将其与枚举类型一起使用。EnumSet(顾名思义)只能包含枚举值,并且所有值都属于同一个枚举。 此外,EnumSet不允许使用空值,这意味着它会抛出NullPointerException尝试添加空值。 它不是线程安全的,这意味着,如果需要,我们需要在外部进行同步。

继承图

枚举集
为什么使用EnumSet
每当我们必须存储枚举值时,EnumSet应该始终是最佳的Set实现。 所有基本操作都以固定的time(1)复杂度执行,这非常快。 这是由于EnumSet类中的所有方法都是使用算术按位运算(<<,>>,&等)实现的。 总而言之,EnumSet非常有效,因为它使用较少的内存并且速度也很快。
EnumSet中的方法
EnumSet<E> close():返回当前集合的副本。static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType):创建一个枚举集,该枚举集包含该枚举中的所有元素 指定的元素类型。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> of(E e):创建一个包含指定元素的枚举集。atic <E extends Enum<E>> EnumSet<E> range(E from, E to):创建一个枚举集,该枚举集包含在由两个参数指定的范围内的所有元素。
从类java.util.AbstractSet继承的方法:
equals), hashCode) , removeAll)
从类java.util.AbstractCollection继承的方法:
add), addAll) ,clear),include), containsAll) , isEmpty) ,iterator),remove), keepAll) ,size), toArray) , toArray(T[])) , toString)
从类java.lang.Object继承的方法:
finalize), getClass) ,notify), notifyAll) ,wait),wait(long))。
从接口java.util.Set继承的方法:
add), addAll) ,clear),contains), containsAll) , isEmpty) ,iterator),remove), retainAll) ,size), toArray) , toArray(T[]))
有关EnumSet主要方法的更多信息,请随时访问原始 Oracle 文档。
import java.util.EnumSet;enum Student{NAME, AGE, MAJOR, YEAR};public class EnumSetExample{public static void main(String[] args){// initializing setEnumSet<Student> set1, set2, set3;// populating the sets using of(E e)enumSet1 = EnumSet.of(Student.NAME, Student.MAJOR, Student.YEAR);// will get all of the properties that have not been initialized to the// specified set (if any)enumSet2 = EnumSet.complementOf(enumSet1);// will get all of the properties that are present in the enumsetenumSet3 = EnumSet.allOf(Student.class);// will get from age to year and everything in between the properties of the// enumset classenumSet4 = EnumSet.range(Student.AGE, Student.YEAR);System.out.println("Set 1: " + enumSet1);System.out.println("Set 2: " + enumSet2);System.out.println("Set 3: " + enumSet3);System.out.println("Set 4: " + enumSet4);}}
输出:
Set 1: {NAME, MAJOR, YEAR}Set 2: {AGE}Set 3: {NAME, AGE, MAJOR, YEAR}Set 4: {AGE, MAJOR, YEAR}
