Java集合之EnumSet

转载自  Java集合之EnumSet

 

EnumSet

EnumSet 是一个专为枚举设计的集合类,EnumSet中的所有元素都必须是指定枚举类型的枚举值,该枚举类型在创建EnumSet时显式或隐式地指定。

  1. EnumSet的集合元素也是有序的,EnumSet以枚举值在Enum类内的定义顺序来决定集合元素的顺序。
  2. EnumSet在内部以位向量的形式存储,这种存储形式非常紧凑、高效,因此EnumSet对象占用内存很小,而且运行效率很好。尤其是进行批量操作(如调用containsAll()和retainAll()方法)时,如果其参数也是EnumSet集合,则该批量操作的执行速度也非常快。
  3. EnumSet集合不允许加入null元素,如果试图插入null元素,EnumSet将抛出NullPointerException异常。
  4. EnumSet类没有暴露任何构造器来创建该类的实例,程序应该通过它提供的类方法来创建EnumSet对象。
  5. 如果只是想判断EnumSet是否包含null元素或试图删除null元素都不会抛出异常,只是删除操作将返回false,因为没有任何null元素被删除。

方法介绍:

  • EnumSet allOf(Class elementType): 创建一个包含指定枚举类里所有枚举值的EnumSet集合。
  • EnumSet complementOf(EnumSet e): 创建一个其元素类型与指定EnumSet里元素类型相同的EnumSet集合,新EnumSet集合包含原EnumSet集合所不包含的、此类枚举类剩下的枚举值(即新EnumSet集合和原EnumSet集合的集合元素加起来是该枚举类的所有枚举值)。
  • EnumSet copyOf(Collection c): 使用一个普通集合来创建EnumSet集合。
  • EnumSet copyOf(EnumSet e): 创建一个指定EnumSet具有相同元素类型、相同集合元素的EnumSet集合。
  • EnumSet noneOf(Class elementType): 创建一个元素类型为指定枚举类型的空EnumSet。
  • EnumSet of(E first,E…rest): 创建一个包含一个或多个枚举值的EnumSet集合,传入的多个枚举值必须属于同一个枚举类。
  • EnumSet range(E from,E to): 创建一个包含从from枚举值到to枚举值范围内所有枚举值的EnumSet集合。

示例代码:

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.创建一个空EnumSetEnumSet 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
}

注意:

除此之外还可以复制另一个EnumSet集合中的所有元素来创建新的EnumSet集合,或者复制另一个Collection集合中的所有元素来创建新的EnumSet集合。

示例:

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]

注意:当复制Collection集合中所有元素来创建新的EnumSet集合时,要求Collection集合中的所有元素必须是同一个枚举类的枚举值。

错误示例:

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. 
得到即是完结,快乐的精髓在于过程。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

struts+hibernate+oracle+easyui实现lazyout组件的简单案例——OpSessionview实现

此过滤器的功能就是让Session始终保持着一个打开的状态: /** * Title: OpenSessionFilter.java * Package org.web * Description: TODO该方法的主要作用: * author A18ccms A18ccms_gmail_com * date 2017-4-19 下午6:51:37 * version V1.0 */ pa…

yaml配置文件整合Mybatis易错点

配置 mybatis:type-aliases-package: com.kuang.pojomapper-locations: classpath:mybatis/mapper/*.xml容易写成以下格式导致出错 mybatis:type-aliases-package: com.kuang.pojomapper-locations: classpath: mybatis/mapper/*.xml

Azure 部署 Asp.NET Core Web App

在云计算大行其道的时代,当你在部署一个网站时,第一选择肯定是各式各样的云端服务。那么究竟使用什么样的云端服务才能够以最快捷的方式部署一个 ASP.NET Core 的网站呢?Azure 的 Web App 服务是个很好的选择。 下面我们会通过 Visual Studio…

联想linux笔记本评测,联想(lenovo)G460AL-ITH Linux笔记本电脑CPU测试评测-ZOL中关村在线...

这颗英特尔最新的Core i5 430M双核心处理器基于32nm工艺,核心代号为Arrandate,主频为2.27GHz,共享的三级缓存为3MB。在开启睿频加速时,单核心的主频最高为2.53GHz,并且支持同步超线程技术。同时除了支持上一代处理器所…

SecureCRT连接Linux的操作步骤

https://www.cnblogs.com/Koma-vv/p/11100565.html SecureCRT连接Linux的操作步骤 虚拟机待机:Ctrlg进入 ipconfig是Windows里面的操作 ifconfig是Linux里面的操作 解决方法:右键: 打开终端是:在桌面上,鼠标右键才可…

聊聊并发(四)深入分析ConcurrentHashMap

转载自 聊聊并发(四)深入分析ConcurrentHashMap 术语定义 术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组…

struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Jsp页面

由于要导入好多js文件和cs文件,并且每个页面都需要导入,所以我把公共的导入js和css文件放在了一个jsp里面,在用到的里面直接导入即可, 此项目用到的js文件下载:这里 用到的css文件的下载:这里 公共的导…

整合MyBatis---SpringBoot

整合MyBatis 官方文档:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/ Maven仓库地址:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/2.1.1 整合测试 1、导入 MyBatis 所需…

c语言 葬礼分号,其实从C语言用分号结尾开始,就是一个悲剧了……

……我该说啥好呢,不懂 pascal 的是你http://www.freepascal.org/docs-html/ref/refsu46.html#x138-14800013.2.1http://www.freepascal.org/docs-html/ref/refsu48.html#x140-15000013.2.3http://www.dragonkiller.nl/Delphi/delphi2009.html#StatementListpascal …

IDEA 底部工具栏没有 Version Control 解决办法

IDEA 底部工具栏没有 Version Control 解决办法 百度了半天 都说VCS配置不对 但是默认IDEA是配置好的 根本不需要修改 忽然看到 工具栏的快捷键 于是 Alt 9 就出现了 完美

一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统

2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客。当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为“希赛网”)个人空间发布过一些…

struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类

主要的业务操作都在这个struts的Action里面,大家来看看: /** * Title: EmpAction.java * Package org.web * Description: TODO该方法的主要作用: * author A18ccms A18ccms_gmail_com * date 2017-4-19 下午8:37:00 * version V1.0 */…

聊聊并发-Java中的Copy-On-Write容器

转载自 聊聊并发-Java中的Copy-On-Write容器 Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后…

android 枚举类型比较大小写,Spring 3.0 MVC绑定枚举区分大小写

如果我有一个像这样的Spring控制器的RequestMapping ...RequestMapping(method RequestMethod.GET, value "{product}")public ModelAndView getPage(PathVariable Product product)产品是一个枚举。例如。 Product.Home当我请求该页面时,mysite.com/ho…

集成SpringSecurity---SpringBoot

集成SpringSecurity 安全简介 在 Web 开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面&am…

OkHttp上传Json嵌套对象

public static DevInfoVo queryRCP() throws Exception {// 东八区时区Calendar cal Calendar.getInstance(TimeZone.getTimeZone("GMT8:00"));//JSONObject obj JSON.parseObject(JSON.toJSONString(pojo));JSONObject obj new JSONObject();obj.put("Autho…

大新闻!Magic Leap造假,HoloLens即将入华商用

昨天微软搞了大新闻,Terry和Alexi到了深圳,在WinHEC大会上宣布了2017上半年HoloLens正式入华商用。 而唯一竞争对手Magic Leap今天也被曝光其设备造假,各大科技媒体纷纷报道,部分相关报道如下: 【新浪科技】Magic Lea…

struts+hibernate+oracle+easyui实现lazyout组件的简单案例——struts.xml配置详情

最后我们来看一下struts.xml里面是怎么配置的呢&#xff0c; struts.xml: <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://strut…

集合框架 Queue---BlockingQueue详解

转载自 集合框架 Queue---BlockingQueue详解 摘要&#xff1a;本例介绍一个特殊的队列:BlockingQueue,如果BlockingQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒,同样,如果BlockingQueue是满的,任何试图往里存东西的操…

cursor 过滤 android,Android cursor query方法详解

1.cursor query 方法入参public final Cursor query (Uri uri, String[] projection,String selection,String[] selectionArgs, String sortOrder)第一个参数&#xff0c;uri&#xff0c;rui是什么呢&#xff1f;好吧&#xff0c;上面我们提到了Android提供内容的叫Provider&a…