类集对enum的支持。
1,EmumMap
public class EnumMap<K extends Enum<K>,V>extends AbstractMap<K,V>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<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集合中。
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的支持。的更多相关文章
- JAVA(四)类集/枚举
成鹏致远 | lcw.cnblog.com |2014-02-04 JAVA类集 1.认识类集 类集的作用 类集实际上就是一个动态的对象数组,与一般的对象数组不同,类集中的对象内容可以任意扩充 类集的 ...
- javase基础笔记4——异常/单例和类集框架
继承 extends final关键 多态 是在继承的基础上 接口 interface 异常 exception 包的访问可控制权限 private default protect public 异常 ...
- 专题笔记--Java 类集框架
Java 类集框架 1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...
- 浅谈java类集框架和数据结构(2)
继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...
- Java -- Java 类集 -- 目录
13.1 认识类集 13.1.1 基本概念 13.1.2 类集框架主要接口 13.2 Collection接口 13.2.1 Collection接口的定义 13.2.2 Collection子接口的 ...
- 编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum
建议110:用类来代替enum 枚举(enum)用来表示一组固定的值.例如,为了表示星期信息,我们可以定义枚举Week: enum Week { Monday, Tuesday, Wednesday, ...
- java:类集回顾
1.类集设置的主要目的:动态的对象数组 2.类集中有以下几个接口: Collection:是存放单值的最大父接口 |- List接口:里面的内容是允许重复的 |- ArrayList, Vector, ...
- Java 类集初探
类集 类集:主要功能就是Java数据结构的实现(java.util) 类集就是动态对象数组(链表也是动态数组) Collection 接口* Collection是整个类集之中单值保存的最大 父接口 ...
- .NET Framework的属性类对控件的支持功能
ToolBoxItem 此属性为类特性.属于工具箱属性,可以设置当前控件是否在工具箱中显示,以及所在工具箱项的类型名称等信息.默认生成的控件都显示在工具箱中. 更多设计时属性介绍: 4.3 属性的 ...
随机推荐
- Flash中的文本应用
1.分离文本 (1)为什么要分离文本? 由于某些操作不能直接作用于文本对象,比如为文本填充渐变色,以及调整文本的外形. 上述操作仅仅作用于图像对象,所以须要将文本打散,使其具有和图形相似的属性. 注意 ...
- RHCA学习笔记:RH442-Unit9内核定时与进程延时
Unit 9 Kernel Timing and Process Latency 内核定时与进程延时 学习目标: A.了解CPU 是怎样追踪时间的 B.调整CPU的访问次数 C.调整调度延时 D. ...
- linux 定时任务计划
crond: unrecognized service 无crond解决办法 安装计划任务:yum -y install vixie-cron
- [转] Android:微信授权登录与微信分享全解析
https://wohugb.gitbooks.io/wechat/content/qrconnent/refresh_token.html http://blog.csdn.net/xiong_it ...
- 使用DrawerLayout实现侧拉菜单
侧拉菜单在android应用中非常常见,它的实现方式太多了,今天我们就说说使用Google提供的DrawerLayout来实现侧拉菜单效果,先来看张效果图: DrawerLayout的实现其实非常简单 ...
- python--class test
# !usr/bin/env python3#-*- coding:utf-8 -*- 'a test class'class Student(object): def __init__(se ...
- RPC框架之Thrift
目前流行的服务调用方式有很多种,例如基于SOAP消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等.其中所用到的数据传输方式包括 XML,JSON 等,然而 XML ...
- C#扫盲之:String字符串的常用方法和冷知识
前言 字符串对于任何编程语言都是必须操作和了解的,因为在实际编程中,任何项目和工程都必须要处理字符串数据,文件路径.提示消息,文本的处理等等,而在使用过程中很多人都是没有系统的了解,大量使用strin ...
- (转)常用CSS优化总结——网络性能与语法性能建议
原文地址:http://www.cnblogs.com/dolphinX/p/3508657.html 在前端面试中最常见的问题就是页面优化和缓存(貌似也是页面优化),被问了几次后心虚的不行,平然平时 ...
- ThinkPHP函数详解:I方法
ThinkPHP的I方法是3.1.3版本新增的,如果你是之前的3.*版本的话,可以直接参考使用3.1快速入门教程系列的变量部分. 概述 正如你所见到的一样,I方法是ThinkPHP众多单字母函数中的新 ...