博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类集对enum的支持。
阅读量:6310 次
发布时间:2019-06-22

本文共 6397 字,大约阅读时间需要 21 分钟。

1,EmumMap

public class EnumMap
,V>extends AbstractMap
implements Serializable, Cloneable

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

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

继承了

构造方法:

常用方法:

实例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
desc = null ; // 定义Map对象,同时指定类型 desc = new EnumMap
(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( 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()返回此映射中所包含值的 视图。 System.out.print(s + "、") ;
}    }}

输出结果:

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

 

2,EnumSet

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

依次验证方法:

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

allOf(<E> elementType)

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

输出:

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

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

 

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

static 
> EnumSet
of(E e) 创建一个最初包含指定元素的枚举 set。 static
> EnumSet
of(E first, E... rest) 创建一个最初包含指定元素的枚举 set。 static
> EnumSet
of(E e1, E e2) 创建一个最初包含指定元素的枚举 set。 static
> EnumSet
of(E e1, E e2, E e3) 创建一个最初包含指定元素的枚举 set。 static
> EnumSet
of(E e1, E e2, E e3, E e4) 创建一个最初包含指定元素的枚举 set。 static
> EnumSet
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
es = null ; // 声明一个EnumSet对象 System.out.println("======== EnumSet.of(Color.BLUE) =====") ; es = EnumSet.of(Color.BLUE) ; // 将枚举的全部类型设置到EnumSet对象之中 print(es) ; } public static void print(EnumSet
temp){ // 专门的输出操作 for(Color c:temp){ // 循环输出EnumSet中的内容 System.out.print(c + "、") ; } System.out.println() ; }}

输出结果:

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

 

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

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

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

范例:

package 类集;import java.util.EnumSet;enum Color{    RED,GREEN,BLUE ;}public class test1{    public static void main(String args[]){        EnumSet
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
temp){ // 专门的输出操作 for(Color c:temp){ // 循环输出EnumSet中的内容 System.out.print(c + "、") ; } System.out.println() ; }}

输出结果:

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

 

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

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

范例:

package 类集;import java.util.EnumSet;enum Color{    RED,GREEN,BLUE ;}public class test1{    public static void main(String args[]){        EnumSet
esOld = null ; // 声明一个EnumSet对象 EnumSet
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
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 
> EnumSet
copyOf(Collection
c) 创建一个从指定 collection 初始化的枚举 set。

范例:

package 类集;import java.util.EnumSet;enum Color{    RED,GREEN,BLUE ;}public class test1{    public static void main(String args[]){        EnumSet
esOld = null ; // 声明一个EnumSet对象 EnumSet
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
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。反射机制。

转载地址:http://klxxa.baihongyu.com/

你可能感兴趣的文章
搭建基于asp.net的wcf服务,ios客户端调用的实现记录
查看>>
工作笔记还是蛮有用
查看>>
UIWindow,UINavigationController与UIViewController之间的关系
查看>>
U盘1G变8M解决的方法
查看>>
爆:中国互联网的那些黑色产业链(转)
查看>>
IOS开发之获取Storyboard创建的ViewController
查看>>
Android ListView不响应OnItemClickListener解决办法
查看>>
数据结构~时间复杂度
查看>>
分享:三种取消选中单选框radio的方法
查看>>
【BZOJ】3391: [Usaco2004 Dec]Tree Cutting网络破坏(dfs)
查看>>
逆透视转换
查看>>
C/C++学习站点资源
查看>>
解决SqlServer 2005 sa帐户不能登录问题
查看>>
bash shell脚本之查看系统环境变量
查看>>
在构造函数中使用new时的注意事项
查看>>
Developing a plugin framework in ASP.NET MVC with medium trust
查看>>
在Windows下使用nmake+Makefile+编译ZThread库(附例子)
查看>>
Android应用程序资源的编译和打包过程分析
查看>>
深度优先搜索的图文介绍
查看>>
Oralce进程信息查看,Oracle的锁表与解锁
查看>>