EnumSet类也是有顺序的,EnumSet按照枚举值在Enum类内定义的顺序决定集合元素的顺序

  EnumSet在内部已位向量的形式存储,这种存储方式非常紧凑、搞笑,因此EnumSet占用内存很小,而且运行效率很好。

  EnumSet集合不允许加入null元素

  EnumSet常用的方法:

  1)、EnumSet allOf(Class elementType):创建一个包含指定枚举类里所有枚举值得EnumSet集合

  2)、EnumSet complementOf(EnumSet s):创建一个气元素类型和指定EnumSet元素类型相同的EnumSet集合,新的ENumSet集合包含原EnumSet集合所有不包含的元素。也就是新的EnumSet集合和指定的EnumSet集合元素相加即为该枚举类里的所有元素

  3)、EnumSet copyOf(Collection c):使用一个普通集合来创建EnumSet集合,要求Collection集合里都是枚举元素,且类型都相同。否则会抛出ClassCastException异常

  4)、EnumSet copyOf(EnumSet s):创建一个与指定EnumSet具有相同元素类型、相同集合元素的EnumSet集合

  5)、EnumSet noneOf(Class elementType):创建一个元素类型为指定枚举类型的空EnumSet

  6)、EnumSet of(E first,E... rest):创建一个包含一个活多个枚举值得EnumSet集合,传人的多个枚举值必须是属于同一个枚举类

  7)、EnumSet range(E from,E to):创建一个包含从from枚举值到to枚举值范围内所有枚举值的EnumSet集合

  下面是示范:

 public class Test {

     public static void main(String[] args) {

         //创建一个EnumSet集合,集合元素就是Season枚举类的全部枚举值
EnumSet es=EnumSet.allOf(Season.class);
System.out.println(es); //输出[SPRING, SUMMER, Fall, WINTER] //创建一个EnumSet空集合,只顶其集合元素是Season类的枚举值
EnumSet es2=EnumSet.noneOf(Season.class);
es2.add(Season.WINTER);
es2.add(Season.SPRING);
System.out.println(es2); //输出[SPRING, WINTER] //以枚举值来创建EnumSet集合
EnumSet es3=EnumSet.of(Season.SUMMER,Season.WINTER);
System.out.println(es3); //输出[SUMMER, WINTER] //创建一个包含Season枚举值从SUMMER到WINTER的EnumSet集合
EnumSet es4=EnumSet.range(Season.SUMMER, Season.WINTER);
System.out.println(es4);//输出[SUMMER, Fall, WINTER] //创建一个EnumSet集合,其元素和es4集合元素类型相同, es4元素+es5元素=Sesson枚举的全部枚举值
EnumSet es5=EnumSet.complementOf(es4);
System.out.println(es5);//输出[SPRING]
}
} enum Season{
SPRING,SUMMER,Fall,WINTER;
}

37、EnumSet详解的更多相关文章

  1. Jmeter系列(37)- 详解 ForEach控制器

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 ForEach 控制器一般和用户 ...

  2. JAVA_SE基础——37.main方法的详解

    主函数 大家都会写吧. 大家一直都不知道为何这样设计,这样设计有什么好处呢? 白话解释: main函数的修饰符是public: 公共的 为何不用private 等等的修饰符 而规定只用public呢? ...

  3. [原创]mybatis详解说明

    mybatis详解 2017-01-05MyBatis之代理开发模式1 mybatis-Dao的代理开发模式 Dao:数据访问对象 原来:定义dao接口,在定义dao的实现类 dao的代理开发模式 只 ...

  4. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...

  5. C#中string.format用法详解

    C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...

  6. 好用的wget命令从下载添加环境变量到各参数详解

    本文是因为(笔者使用的windows系统)使用过好几次wget后,始终存在各种细节问题,于是下定决定细致的研究一下,并记录下其中细节. 下载与安装 第一步:下载wget,网络地址:http://dow ...

  7. Hadoop MapReduce执行过程详解(带hadoop例子)

    https://my.oschina.net/itblog/blog/275294 摘要: 本文通过一个例子,详细介绍Hadoop 的 MapReduce过程. 分析MapReduce执行过程 Map ...

  8. linux查看端口及端口详解

    今天现场查看了TCP端口的占用情况,如下图   红色部分是IP,现场那边问我是不是我的程序占用了tcp的链接,,我远程登陆现场查看了一下,这种类型的tcp链接占用了400多个,,后边查了一下资料,说E ...

  9. 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING

    <Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th  2014 Email:skyseraph00@163.com 更多精彩请直接 ...

随机推荐

  1. bzoj 2821 分块

    分块: 先预处理,将原序列分成长度为len的许多块,计算从第i块到第j块的答案,(可以做到O(n*n/len)). 每次询问时,将询问的区间分成三部分,:左边,中间,右边,中间是尽量大的一个块区间,其 ...

  2. HashMap结构及使用

    HashMap的数据结构 HashMap主要是用数组来存储数据的,我们都知道它会对key进行哈希运算,哈系运算会有重复的哈希值,对于哈希值的冲突,HashMap采用链表来解决的.在HashMap里有这 ...

  3. <摘录>linux文件IO

    这篇文章写的比较全面,也浅显易懂,备份下.转载自:http://blog.chinaunix.net/uid-27105712-id-3270102.html 在Linux 开发中,有几个关系到性能的 ...

  4. GCC降级

    前阵子将Ubuntu升级到了12.04,原来装得virtualbox也可以正常使用.后来几次内核升级之后,virtualbox突然不能用了.virtualbox提示进行/etc/init.d/vbox ...

  5. 重装Windows系统后,Mysql的恢复

    在原地直接恢复MySQL的自动启动的数据库服务,操作如下. (1)环境变量里配置一下Mysql的bin目录 (2)管理员方式启动cmd,运行命令mysqld –install (3)启动Mysql服务 ...

  6. Eclipse maven构建springmvc项目

    原文地址: http://www.cnblogs.com/fangjins/archive/2012/05/06/2485459.html 一.背景介绍 对于初学者,用maven构建项目并不是一件容易 ...

  7. mysql中避免使用保留字和关键字做列的名字

    设计数据表时,应尽量避免使用MySQL的关键字和保留字作为表名或列名. 比如key和keys为保留字,如果不小心使用关键字或者保留字作为列名字,执行下面的语句会出现语法错误: select * fro ...

  8. POJ 1737 Connected Graph 题解(未完成)

    Connected Graph Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3156   Accepted: 1533 D ...

  9. by,with

    一.表示使用有形的工具时,通常用with来表示.例如: 用钢笔写 write with a pen 用肉眼看 see with naked eyes 用锤子敲打 strike with a hamme ...

  10. 让editplus支持sql编辑

    摘自: http://www.cnblogs.com/yeminglong/archive/2011/10/15/2212991.html 让editplus支持sql编辑 时比较喜欢用editplu ...