java入门之EnumSet类
白羽 2018-07-09 来源 :网络 阅读 893 评论 0

摘要:本文将带你了解java入门之EnumSet类,希望本文对大家学JAVA有所帮助。


一、类结构:

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 实现。枚举 set 中所有键都必须来自单个枚举类型,该枚举类型在创建 set 时显式或隐式地指定。枚举 set 在内部表示为位向量。此表示形式非常紧凑且高效。此类的空间和时间性能应该很好,足以用作传统上基于 int 的“位标志”的替换形式,具有高品质、类型安全的优势。如果其参数也是一个枚举 set,则批量操作(如 containsAll 和 retainAll)也应运行得非常快。

由 iterator 方法返回的迭代器按其自然顺序 遍历这些元素(该顺序是声明枚举常量的顺序)。返回的迭代器是弱一致的:它从不抛出 ConcurrentModificationException,也不一定显示在迭代进行时发生的任何 set 修改的效果。

不允许使用 null 元素。试图插入 null 元素将抛出 NullPointerException。但是,试图测试是否出现 null 元素或移除 null 元素将不会抛出异常。

像大多数 collection 实现一样,EnumSet 是不同步的。如果多个线程同时访问一个枚举 set,并且至少有一个线程修改该 set,则此枚举 set 在外部应该是同步的。这通常是通过对自然封装该枚举 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections.synchronizedSet(java.util.Set) 方法来“包装”该 set。最好在创建时完成这一操作,以防止意外的非同步访问:

 Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));

 

实现注意事项:所有基本操作都在固定时间内执行。虽然并不保证,但它们很可能比其 HashSet 副本更快。如果其参数也是一个枚举 set ,则批量操作会在固定时间内执行。

此类是 Java Collections Framework 的成员。 

 

四、方法详细:

1、public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) 

创建一个具有指定元素类型的空枚举 set。

参数:elementType - 此枚举 set 的元素类型的 class 对象

抛出:NullPointerException - 如果 elementType 为 null

2、public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)   

创建一个包含指定元素类型的所有元素的枚举 set。 

参数:elementType - 此枚举 set 的元素类型的 class 对象 

抛出: NullPointerException - 如果 elementType 为 null

3、public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s) 

创建一个其元素类型与指定枚举 set 相同的枚举 set,最初包含相同的元素(如果有的话)。 参数:s - 用于初始化此枚举 set 的枚举 set 

抛出: NullPointerException - 如果 s 为 null

4、public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c)    

创建一个从指定 collection 初始化的枚举 set。如果指定的 collection 是一个 EnumSet 实例,则此静态工厂方法的功能与 copyOf(EnumSet) 相同。否则,指定的 collection 必须至少包含一个元素(以确定新枚举 set 的元素类型)。 

参数:c - 用于初始化此枚举 set 的 collection 

抛出: IllegalArgumentException - 如果 c 不是一个 EnumSet 实例,并且不包含元素 

       NullPointerException - 如果 c 为 null

5、public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)  

创建一个其元素类型与指定枚举 set 相同的枚举 set,最初包含指定 set 中所不 包含的此类型的所有元素。 

参数:s - 用其补码初始化此枚举 set 的枚举 set 

抛出: NullPointerException - 如果 s 为 null

6、public static <E extends Enum<E>> EnumSet<E> of(E e)

创建一个最初包含指定元素的枚举 set。 用 1 到 5 个元素重载此方法,从而初始化一个枚举 set。第 6 次重载使用变量参数功能。此重载可能创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。 

参数:e - 此 set 最初包含的元素 

返回:最初包含指定元素的枚举 set 

抛出: NullPointerException - 如果 e 为 null

7、public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2)

创建一个最初包含指定元素的枚举 set。 用 1 到 5 个元素重载此方法,从而初始化一个枚举 set。第 6 次重载使用变量参数功能。此重载可能创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。 

参数:e1 - 此 set 最初要包含的元素

             e2 - 此 set 最初要包含的另一个元素 

返回:最初包含指定元素的枚举 set 

抛出: NullPointerException - 如果任意参数为 null

8、public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3)   

创建一个最初包含指定元素的枚举 set。 用 1 到 5 个元素重载此方法,从而初始化一个枚举 set。第 6 次重载使用变量参数功能。此重载可能创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。 

参数:e1 - 此 set 最初要包含的元素

      e2 - 此 set 最初要包含的另一个元素

      e3 - 此 set 最初要包含的另一个元素 

返回:最初包含指定元素的枚举 set 

抛出: NullPointerException - 如果任意参数为 null

9、public static <E extends Enum<E>> EnumSet<E> of(E e1,  E e2, E e3, E e4)

创建一个最初包含指定元素的枚举 set。 用 1 到 5 个元素重载此方法,从而初始化一个枚举 set。第 6 次重载使用变量参数功能。此重载可能创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。 

参数:e1 - 此 set 最初要包含的元素

      e2 - 此 set 最初要包含的另一个元素

      e3 - 此 set 最初要包含的另一个元素

      e4 - 此 set 最初要包含的另一个元素 

返回:最初包含指定元素的枚举 set 

抛出: NullPointerException - 如果任意参数为 null

10、public static <E extends Enum<E>> EnumSet<E> of(E e1,E e2,E e3, E e4,E e5)

创建一个最初包含指定元素的枚举 set。 用 1 到 5 个元素重载此方法,从而初始化一个枚举 set。第 6 次重载使用变量参数功能。此重载可能创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。 

参数:e1 - 此 set 最初要包含的元素

      e2 - 此 set 最初要包含的另一个元素

      e3 - 此 set 最初要包含的另一个元素

      e4 - 此 set 最初要包含的另一个元素

      e5 - 此 set 最初要包含的另一个元素 

返回:最初包含指定元素的枚举 set 

抛出: NullPointerException - 如果任意参数为 null

11、public static <E extends Enum<E>> EnumSet<E> of(E first,  E... rest)

创建一个最初包含指定元素的枚举 set。此工厂方法的参数列表使用变量参数功能,该方法可以创建一个最初包含任意个元素的枚举 set,但是这样很可能比不使用变量参数的重载运行得慢。 

参数:first - 此 set 最初要包含的元素

      rest - 此 set 最初要包含的其余元素 

返回:最初包含指定元素的枚举 set 

抛出: NullPointerException - 如果任意参数为 null,或 rest 为 null

12、public static <E extends Enum<E>> EnumSet<E> range(E from, E to)

创建一个最初包含由两个指定端点所定义范围内的所有元素的枚举 set。返回的 set 将包含端点本身,这两个端点可能相同,但顺序不能颠倒。 

参数:from - 该范围中的第一个元素

      to - 妨碍范围中的最后一个元素 

返回:最初包含由两个指定端点所定义范围内的所有元素的枚举 set 

抛出: NullPointerException - 如果 first 或 last 为 null 

       IllegalArgumentException - 如果 first.compareTo(last) > 0

13、public EnumSet<E> clone()    返回 set 的副本。 

覆盖:类 Object 中的 clone

返回:set 的副本



以上就介绍了JAVA的相关知识,希望对JAVA有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言JAVA频道!

 

 


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程