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. Windows Mobile 6.0 SDK和中文模拟器下载

    [转] Windows Mobile 6.0 SDK和中文模拟器下载 Windows Mobile 6.5 模拟器 2010年12月06日 星期一 07:48 转载自 zhangyanle86 终于编 ...

  2. android114 c转换成c++

    ##C向C++改造 . 把c文件后缀名换成cpp . Android.mk文件中的hello.c也要换成hello.cpp . c++的使用的环境变量结构体中,访问了c使用的结构体的函数指针,函数名全 ...

  3. 移动Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

  4. jQuery 序列化表单 serialize() serializeArray()

    1.serialize()方法 格式:var data = $("form").serialize(); 功能:将表单内容序列化成一个字符串. 这样在ajax提交表单数据时,就不用 ...

  5. i++与++i的区别

    i++与++i的意思都是i自身加1,不过这个两个语句却有很大的区别. ++i,就是直接在i上再加1,这个无需多解释. i++会稍微特殊些,他会在下次执行语句,再遇到i时,才会在i身上加1. 打个比方, ...

  6. 读《编写高质量代码:改善JavaScript程序的188个建议》2

  7. 移动端和PC端通用的三级导航菜单栏

    免责声明: 本博客发布的所有信息资料都将尽可能注明出处.作者及日期,本人无意侵犯他人相关权益,如无意中侵犯了哪个媒体或个人的权益或知识产权,请留言或来信告之,本人将立即给予删除. Demo下载地址:h ...

  8. webform 转 MVC 飞一般的感觉

    前言: 浅谈webform与mvc,让开发变得更加简单,这里主要通过比较webform与mvc的开发方式,以下全属个人看法,不完善的地方可以留言补充. 正文: 废话不多说,直接说工作中经常用到的地方 ...

  9. VIM学习1

    不得不说鸟哥的Linux写得太好了,VIM篇章,通读一篇,感觉收获挺大.之前几年前装逼硬着学,感觉硬是没懂,看的特晕,学得特别慢,抄一两遍也没什么多大的作用.这一回看了,感觉马上就能记住不少,当然大多 ...

  10. python中关于正则表达式三

    2015年8月14日 11:10 7.2正则表达式操作 正则表达式使用反斜杠字符'\'来暗示一些特殊的形式或者允许特殊的字符使用但是没有调用它们特殊的意思.在字符串常量中的相同目标的字符的python ...