1,EmumMap

public class EnumMap<K extends Enum<K>,V>extends AbstractMap<K,V>implements Serializable, Cloneable

发现继承了abstractMap类,说明是Map子类。

继承了Serializable,说明这个类可以被序列化。

继承了Cloneable,说明了这个类可以被克隆。

构造方法:

常用方法:

实例1代码package 类集;import java.util.EnumMap;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet; enum Color{
RED,GREEN,BLUE ;
}
public class test1{
public static void main(String args[]){
Map<Color,String> desc = null ; // 定义Map对象,同时指定类型
desc = new EnumMap<Color,String>(Color.class) ; // 实例化EnumMap对象
desc.put(Color.RED,"红色") ;
desc.put(Color.GREEN,"绿色") ;
desc.put(Color.BLUE,"蓝色") ;
System.out.println("====== 输出全部的内容 ======") ;
for(Color c:Color.values()){
System.out.println(c.name() + " --> " + desc.get(c)) ;  //get(Object key)返回对应键所对应的内容。
}
System.out.println("====== 输出全部的键值 ======") ;
for(Color c:desc.keySet()){  //遍历emumMap对象的键值集合,集合的单元key的类型是Color枚举类型。
System.out.print(
+ "、") ;
System.out.println() ;
System.out.println("====== 输出全部的内容 ======") ;
for(String s:desc.values()){    //values()返回此映射中所包含值的 Collection 视图。
System.out.print(s + "、") ;
        }    }
}

输出结果:

====== 输出全部的内容 ======
RED --> 红色
GREEN --> 绿色
BLUE --> 蓝色
====== 输出全部的键值 ======
RED、GREEN、BLUE、
====== 输出全部的内容 ======
红色、绿色、蓝色、

2,EnumSet

EnumSet是Set子类,里面内容无法重复,使用的时候,不能直接使用关键字new实例化。所以提供了很多静态方法。

依次验证方法:

1,将全部集合设置到EnumSet集合中。

allOf(Class<E> elementType)

package 类集;
import java.util.EnumSet;
enum Color{
RED,GREEN,BLUE ;
}
public class test1{
public static void main(String args[]){
EnumSet<Color> es = null ; // 声明一个EnumSet对象
System.out.println("======== EnumSet.allOf(Color.class) =====") ;
es = EnumSet.allOf(Color.class) ; // 将枚举的全部类型设置到EnumSet对象之中
print(es) ;
}
public static void print(EnumSet<Color> temp){ // 专门的输出操作
for(Color c:temp){ // 循环输出EnumSet中的内容
System.out.print(c + "、") ;
}
System.out.println() ;
}
}

输出:

======== EnumSet.allOf(Color.class) =====
RED、GREEN、BLUE、

上面成功将枚举的全部类型设置到enumSet中。

2,只设置集合中一个对象到enumSet中。

static <E extends Enum<E>>  EnumSet<E>  of(E e)       创建一个最初包含指定元素的枚举 set。
static <E extends Enum<E>> EnumSet<E> of(E first, E... rest) 创建一个最初包含指定元素的枚举 set。
static <E extends Enum<E>> EnumSet<E> of(E e1, E e2) 创建一个最初包含指定元素的枚举 set。
static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3) 创建一个最初包含指定元素的枚举 set。
static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4) 创建一个最初包含指定元素的枚举 set。
static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4, E e5) 创建一个最初包含指定元素的枚举 set。

范例:

package 类集;
import java.util.EnumSet; enum Color{
RED,GREEN,BLUE ;
}
public class test1{
public static void main(String args[]){
EnumSet<Color> es = null ; // 声明一个EnumSet对象
System.out.println("======== EnumSet.of(Color.BLUE) =====") ;
es = EnumSet.of(Color.BLUE) ; // 将枚举的全部类型设置到EnumSet对象之中
print(es) ;
}
public static void print(EnumSet<Color> temp){ // 专门的输出操作
for(Color c:temp){ // 循环输出EnumSet中的内容
System.out.print(c + "、") ;
}
System.out.println() ;
}
}

输出结果:

======== EnumSet.of(Color.BLUE) =====
BLUE、

创建只能放入指定枚举类型的集合。

可能同时有多个类型的枚举对象,但是一个集合中只要求放入指定类型的枚举。

static <E extends Enum<E>>  EnumSet<E>   noneOf(Class<E> elementType)
创建一个具有指定元素类型的空枚举 set。

范例:

package 类集;
import java.util.EnumSet; enum Color{
RED,GREEN,BLUE ;
}
public class test1{
public static void main(String args[]){
EnumSet<Color> es = null ; // 声明一个EnumSet对象
System.out.println("======== EnumSet.noneOf(Color.class) =====") ;
es = EnumSet.noneOf(Color.class) ; // 将枚举的全部类型设置到EnumSet对象之中
es.add(Color.RED) ; // 增加内容
es.add(Color.GREEN) ; // 增加内容

print(es) ;
}
public static void print(EnumSet<Color> temp){ // 专门的输出操作
for(Color c:temp){ // 循环输出EnumSet中的内容
System.out.print(c + "、") ;
}
System.out.println() ;
}
}

输出结果:

======== EnumSet.noneOf(Color.class) =====
RED、GREEN、

还可以创建不包含指定元素的集合。

static <E extends Enum<E>>  EnumSet<E>   complementOf(EnumSet<E> s)
创建一个其元素类型与指定枚举 set 相同的枚举 set,最初包含指定 set 中所不 包含的此类型的所有元素。

范例:

package 类集;
import java.util.EnumSet; enum Color{
RED,GREEN,BLUE ;
}
public class test1{
public static void main(String args[]){
EnumSet<Color> esOld = null ; // 声明一个EnumSet对象
EnumSet<Color> esNew = null ;
System.out.println("======== EnumSet.complementOf(Color.class) =====") ;
esOld = EnumSet.noneOf(Color.class) ; // 将枚举的全部类型设置到EnumSet对象之中
esOld.add(Color.RED) ; // 增加内容
esOld.add(Color.GREEN) ; // 增加内容
esNew = EnumSet.complementOf(esOld) ; // 不包含指定内容
print(esNew) ;
}
public static void print(EnumSet<Color> temp){ // 专门的输出操作
for(Color c:temp){ // 循环输出EnumSet中的内容
System.out.print(c + "、") ;
}
System.out.println() ;
}
}

输出结果:

======== EnumSet.complementOf(Color.class) =====
BLUE、

发现,esnew对象中值为枚举类中除了esold对象中的值的其他值。例如这里是去掉了esold里面的RED,GREEN后,枚举类中剩下的BLUE.

拷贝集合中的值给另一个enumSet对象。

static <E extends Enum<E>>  EnumSet<E>  copyOf(Collection<E> c)
创建一个从指定 collection 初始化的枚举 set。

范例:

package 类集;
import java.util.EnumSet; enum Color{
RED,GREEN,BLUE ;
}
public class test1{
public static void main(String args[]){
EnumSet<Color> esOld = null ; // 声明一个EnumSet对象
EnumSet<Color> esNew = null ;
System.out.println("======== EnumSet.copyOf(Color.class) =====") ;
esOld = EnumSet.noneOf(Color.class) ; // 将枚举的全部类型设置到EnumSet对象之中
esOld.add(Color.RED) ; // 增加内容
esOld.add(Color.GREEN) ; // 增加内容
esNew = EnumSet.copyOf(esOld) ; // 从已有的集合拷贝过来
print(esNew) ;
}
public static void print(EnumSet<Color> temp){ // 专门的输出操作
for(Color c:temp){ // 循环输出EnumSet中的内容
System.out.print(c + "、") ;
}
System.out.println() ;
}
}

结果:

======== EnumSet.copyOf(Color.class) =====
RED、GREEN、

总结:

1,enumMap是符合Map操作形式的,而enumSet基本就是静态方法完成的。

2,操作中大量使用了枚举.Class。反射机制。

类集对enum的支持。的更多相关文章

  1. JAVA(四)类集/枚举

    成鹏致远 | lcw.cnblog.com |2014-02-04 JAVA类集 1.认识类集 类集的作用 类集实际上就是一个动态的对象数组,与一般的对象数组不同,类集中的对象内容可以任意扩充 类集的 ...

  2. javase基础笔记4——异常/单例和类集框架

    继承 extends final关键 多态 是在继承的基础上 接口 interface 异常 exception 包的访问可控制权限 private default protect public 异常 ...

  3. 专题笔记--Java 类集框架

    Java 类集框架 1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...

  4. 浅谈java类集框架和数据结构(2)

    继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...

  5. Java -- Java 类集 -- 目录

    13.1 认识类集 13.1.1 基本概念 13.1.2 类集框架主要接口 13.2 Collection接口 13.2.1 Collection接口的定义 13.2.2 Collection子接口的 ...

  6. 编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum

    建议110:用类来代替enum 枚举(enum)用来表示一组固定的值.例如,为了表示星期信息,我们可以定义枚举Week: enum Week { Monday, Tuesday, Wednesday, ...

  7. java:类集回顾

    1.类集设置的主要目的:动态的对象数组 2.类集中有以下几个接口: Collection:是存放单值的最大父接口 |- List接口:里面的内容是允许重复的 |- ArrayList, Vector, ...

  8. Java 类集初探

    类集 类集:主要功能就是Java数据结构的实现(java.util) 类集就是动态对象数组(链表也是动态数组) Collection 接口* Collection是整个类集之中单值保存的最大 父接口 ...

  9. .NET Framework的属性类对控件的支持功能

     ToolBoxItem 此属性为类特性.属于工具箱属性,可以设置当前控件是否在工具箱中显示,以及所在工具箱项的类型名称等信息.默认生成的控件都显示在工具箱中. 更多设计时属性介绍: 4.3 属性的 ...

随机推荐

  1. VC中获取窗体句柄的各种方法

    AfxGetMainWnd AfxGetMainWnd获取自身窗体句柄 HWND hWnd = AfxGetMainWnd()->m_hWnd; GetTopWindow 函数功能:该函数检查与 ...

  2. linux-memory-buffer-vs-cache

    http://stackoverflow.com/questions/6345020/linux-memory-buffer-vs-cache

  3. (转载)Ant教程

    ant教程(一) 写在所有之前 为了减少阅读的厌烦,我会使用尽量少的文字,尽量明白的表达我的意思,尽我所能吧.作为一个学习者,在我的文章中会存在各种问题,希望热心人指正.目录大概是这样 ant教程 ( ...

  4. Linux--------------更改yum

    1.进入yum配置文件目录        cd /etc/yum.repos.d    2.备份配置文件        mv CentOS-Base.repo CentOS-Base.repo.bak ...

  5. Learning Django Resources

    Learning Django Django makes it easier to build better Web apps more quickly and with less code. Web ...

  6. Mysql 的一些异常解决

    一.关于大文件存储 1.利用mysql存储大文件时,异常截图 在配置文件中加上如下一行 2.改完后重启mysql,但是又报如下错误: 解决方案: 我的mysql 是5.6版本,查到网上说要修改配置文件 ...

  7. ServiceStack.Redis 破解

    在github上下载了ServiceStack.Redis,做测试发现有限制,居然从v4开始就收费,无聊时,做了个源码分析 废话不多,上测试代码 try { ; i < ; i++) { red ...

  8. maven打war包注意之xml、properties文件没打进去解决方法

    maven项目在ide中编译出的war包一般不会有很多问题. 但是经过集成环境打war包会出现war包中打不进xml.properties等文件.这样打war包不会报错,但是war包放进tomcat中 ...

  9. Python GUI with Tkinter (from youtube) 在youtube上能找到很多编程视频...

    Python GUI with Tkinter - 1 - Introduction以上链接是一个python tkinter视频系列的第一讲的链接.虽然英语不好,但是,程序还是看得懂的(照着做就可以 ...

  10. storm学习之入门篇(一)

    海量数据处理使用的大多是鼎鼎大名的hadoop或者hive,作为一个批处理系统,hadoop以其吞吐量大.自动容错等优点,在海量数据处理上得到了广泛的使用.但是,hadoop不擅长实时计算,因为它天然 ...