`
chaoyi
  • 浏览: 290371 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

类集对Enum的支持

 
阅读更多

本章目标
掌握EnumMap类的使用
掌握EnumSet类的使用

 

类集对枚举的支持
在JDK 1.5的java.util 程序包中提供两个新的集合操作类:EnumMap 和 EnumSet,这两个类与枚举类型的结合应用可使以前非常繁琐的程序变得简单方便。EnumSet类提供了java.util.Set接口的一个特殊实现,而EnumMap类提供了java.util.Map接口的一个特殊实现,该类中的键(key)是一个枚举类型。

 

EnumMap
EnumMap是Map接口的子类,所以本身还是以Map的形式进行操作,即:key —> value。如果要想使用EnumMap,则首先要创建EnumMap的对象,在创建此对象的时候必须指定要操作的枚举类型,所以构造方法如下所示:
——public EnumMap(Class<K> keyType)

 

验证EnumMap

import java.util.EnumMap;
import java.util.Map;
enum Color{
	RED,GREEN,BLUE;//定义枚举的 3 个类型
}
public class EnumMapDemo {
	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.ordinal() +" --> "+c.name());
		}
		System.out.println("======= 输出全部的键值 =======");
		for(Color c:desc.keySet()){//取得全部的 key
			System.out.print(c.name()+"、");
		}
		System.out.println("\n======= 输出全部的内容 =======");
		for(String s:desc.values()){//取得全部的 value
			System.out.print(s+"、");
		}
	}
/* 结果:
 * ======= 输出全部内容 =======
 * 0 --> RED
 * 1 --> GREEN
 * 2 --> BLUE
 * ======= 输出全部内容 =======
 * RED、GREEN、BLUE、
 * ======= 输出全部内容 =======
 * 红色、绿色、蓝色、
 * */
}

 

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

 

EnumSet类的常用方法

 

验证EnumSet —— 将全部的集合设置到EnumSet集合之中

import java.util.EnumSet;
enum Color{
	RED,GREEN,BLUE;//定义枚举的 3 个类型
}
public class EnumSetDemo01 {
	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+"、");
		}
	}
/* 结果:
 * ====== EnumSet.allOf(Color.class) ======
 * RED、GREEN、BLUE、
 * */
}

 

验证EnumSet —— 只设置一个枚举的类型到集合之中

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

 

验证EnumSet —— 创建只能放入指定枚举类型的集合

import java.util.EnumSet;
enum Color{
	RED,GREEN,BLUE;//定义枚举的 3 个类型
}
public class EnumSetDemo03 {
	public static void main(String[] args) {
		EnumSet<Color> es = null;//声明一个 EnumSet 对象
		System.out.println("====== EnumSet.noneOf(Color.class) ======");
		es = EnumSet.noneOf(Color.class);//创建一个可以加入 Color 类型的对象
		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+"、");
		}
	}
/* 结果:
 * ====== EnumSet.noneOf(Color.class) ======
 * RED、GREEN、
 * */
}

 

验证EnumSet —— 创建不包含指定元素的集合

import java.util.EnumSet;
enum Color{
	RED,GREEN,BLUE;//定义枚举的 3 个类型
}
public class EnumSetDemo04 {
	public static void main(String[] args) {
		EnumSet<Color> esOld = null;//声明一个 EnumSet 对象
		EnumSet<Color> esNew = null;//声明一个 EnumSet 对象
		esOld = EnumSet.noneOf(Color.class);//创建一个可以加入 Color 类型的对象
		esOld.add(Color.RED);//增加内容
		esOld.add(Color.GREEN);//增加内容
		System.out.println("====== EnumSet.complementOf(es) ======");
		esNew = EnumSet.complementOf(esOld);//创建一个不包含指定元素的集合
		print(esNew);
	}
	public static void print(EnumSet<Color> temp){//专门的输出操作
		for(Color c:temp){//循环输出 EnumSet 中的内容
			System.out.print(c+"、");
		}
	}
/* 结果:
 * ====== EnumSet.complementOf(es) ======
 * BLUE、
 * */
}

 

验证EnumSet —— 拷贝已有的内容

import java.util.EnumSet;
enum Color{
	RED,GREEN,BLUE;//定义枚举的 3 个类型
}
public class EnumSetDemo05 {
	public static void main(String[] args) {
		EnumSet<Color> esOld = null;//声明一个 EnumSet 对象
		EnumSet<Color> esNew = null;//声明一个 EnumSet 对象
		esOld = EnumSet.noneOf(Color.class);//创建一个可以加入 Color 类型的对象
		esOld.add(Color.RED);//增加内容
		esOld.add(Color.GREEN);//增加内容
		System.out.println("====== EnumSet.copyOf(es) ======");
		esNew = EnumSet.copyOf(esOld);//从已有的集合中复制出内容
		print(esNew);
	}
	public static void print(EnumSet<Color> temp){//专门的输出操作
		for(Color c:temp){//循环输出 EnumSet 中的内容
			System.out.print(c+"、");
		}
	}
/* 结果:
 * ====== EnumSet.copyOf(es) ======
 * RED、GREEN、
 * */
}

 

 

 

 

  • 大小: 58 KB
分享到:
评论

相关推荐

    Java期末复习——枚举与反射机制

    Java——枚举: enum关键字、Enum类 类集对枚举的支持——EnumMap类与EnumSet类 枚举类实现接口、在枚举类中定义抽象方法 Java反射机制: Class类、Class类的使用 反射的应用:取得类的结构

    laravel-enum:更方便地在项目中定义并使用枚举

    概览提供了多种实用的方式来实例化枚举支持多语言本地化描述支持表单验证,提供验证规则 enum,enum_key 和 enum_value,对请求参数中的参数进行枚举校验支持路由中间件自动将 Request 参数转换成相应枚举实例支持 ...

    enumflags2:Rust库,用于高效地表示无数据枚举集

    枚举标志enumflags2实现了经典的enumflags2结构。 用#[bitflags]注释一个枚举, BitFlags将能够在单个... 对带有功能标志的序列化的可选支持。例子use enumflags2 :: {bitflags, make_bitflags, BitFlags};#[bitflags]#

    MySql 5.1 参考手册.chm

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

    斯坦福自然语言推理(SNLI)语料库-数据集

    SNLI语料库(1.0版)是一个570k人工编写的英语句子对的集合,这些句子对经过手动标记以实现平衡分类,并带有enume,矛盾和中性标签,支持自然语言推理(NLI)的任务,也称为识别文本蕴涵(RTE)。可用于探索知识图谱...

    Java开发详解.zip

    031403_【第14章:枚举】_类集对Enum的支持笔记.pdf 031404_【第14章:枚举】_枚举的其他应用笔记.pdf 031501_【第15章:Java反射机制】_认识Class类笔记.pdf 031502_【第15章:Java反射机制】_Class类的使用笔记....

    Windows2000活动目录开发人员参考库第4卷ADSI参考手册

    4.1 开发者支持 4.2 在线资源 4.3 关于学习的产品 4.4 会议 4.5 其他资源 第二部分 指南、例子和编程参考 第5章 需要首先知道的有关ADSI的知识 5.1 ADSI函数 5.1.1 ADsBuildEnumerator函数 5.1.2 ...

    MySQL 5.1参考手册 (中文版)

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

    MySQL 5.1中文手冊

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

    mysql官方中文参考手册

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

    MYSQL中文手册

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列...

    MySQL 5.1参考手册中文版

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列...

    MySQL 5.1参考手册

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

    The Art of Assembly Language

    4.19 HLA标准库对字符集的支持 4.20 在HLA程序中使用字符集 4.21 数组 4.22 在HLA程序中声明数组 4.23 HLA数组常量 4.24 访问一维数组的元素 4.25 多维数组 4.26 多维数组的存储空间分配 4.27 汇编语言中多维数组...

    Liquid.Studio2018 XMLtoXSD

    提供对最新XSLT 3.0函数和子句的支持。 8、新的 Git源代码控制集成支持 通过在TortoiseGit上提供包装器,为Git源代码控制提供支持。显示项目树中每个文档的状态。 9、XML Data Binder中的新 .Net标准支持 Liquid XML...

    MySQL5.1参考手册官方简体中文版

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

    MySQL 5.1官方简体中文参考手册

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

Global site tag (gtag.js) - Google Analytics