分类: Java
【枚举】_类集对Enum的支持笔记
本章目标:
掌握EnumMap类的使用
掌握EnumSet类的使用
3、具体内容
3.1、EnumMap
定义格式:
public class EnumMap<K extends Enum<K>,V>
extends AbstractMap<K,V>
implements Serializable,Cloneable
范例:
3.2、EnumSet
EnumSet是Set接口的子类,所以里面的内容是无法重复的,在使用EnumSet的时候是不能直接使用关键字new为其进行实例化的,所以在此类中提供了很多的静态方法。
依次验证EnumSet类的方法
范例:将全部的集合设置到EnumSet集合之中。
范例:只设置一个内容到集合
创建只能放入指定枚举类型的集合
可能同时有多个类型的枚举对象,但是一个集合中只要求放入指定类型的枚举。
还可以创建不包含制定元素的集合。
还可以拷贝一个集合的内容
总结:
1、EnumMap和EnumSet,EnumMap是符合Map的操作形式的,而EnumSet基本上就是使用静态方法完成。
2、在操作中大量的使用了枚举.class,这个属于Java反射机制。
本章目标:
掌握EnumMap类的使用
掌握EnumSet类的使用
3、具体内容
3.1、EnumMap
定义格式:
public class EnumMap<K extends Enum<K>,V>
extends AbstractMap<K,V>
implements Serializable,Cloneable
范例:
- import java.util.EnumMap;
- import java.util.Map;
- enum Color{
- RED,GREEN,BLUE;
- }
- public class EnumMapDemo{
- public static void main(String args[]){
- Map<Color,String> desc = null;
- 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));
- }
- System.out.println("=====输出全部的键值=====");
- for(Color c:desc.keySet()){
- System.out.print(c.name()+"、");
- }
- System.out.println();
- System.out.println("=====输出全部的内容=====");
- for(String s:desc.values()){
- System.out.println(s+"、");
- }
- }
- }
3.2、EnumSet
EnumSet是Set接口的子类,所以里面的内容是无法重复的,在使用EnumSet的时候是不能直接使用关键字new为其进行实例化的,所以在此类中提供了很多的静态方法。
依次验证EnumSet类的方法
范例:将全部的集合设置到EnumSet集合之中。
- import java.util.EnumSet;
- enum Color{
- RED,GREEN,BLUE;
- }
- public class EnumSetDemo01{
- public static void main(String args[]){
- EnumSet<Color> es = null;
- 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){
- System.out.print(c+"、");
- }
- System.out.println();
- }
- }
范例:只设置一个内容到集合
- import java.util.EnumSet;
- enum Color{
- RED,GREEN,BLUE;
- }
- public class EnumSetDemo02{
- public static void main(String args[]){
- EnumSet<Color> es = null;
- 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){
- System.out.print(c+"、");
- }
- System.out.println();
- }
- }
创建只能放入指定枚举类型的集合
可能同时有多个类型的枚举对象,但是一个集合中只要求放入指定类型的枚举。
- import java.util.EnumSet;
- enum Color{
- RED,GREEN,BLUE;
- }
- 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);//将枚举的全部类型设置到EnumSet对象之中
- es.add(Color.RED); //增加内容
- es.add(Color.GREEN); //增加内容
- print(es);
- }
- public static void print(EnumSet<Color> temp){
- for(Color c:temp){
- System.out.print(c+"、");
- }
- System.out.println();
- }
- }
还可以创建不包含制定元素的集合。
- import java.util.EnumSet;
- enum Color{
- RED,GREEN,BLUE;
- }
- public class EnumSetDemo04{
- public static void main(String args[]){
- EnumSet<Color> esOld = null;
- EnumSet<Color> esNew = null;
- System.out.println("====EnumSet.complementOf(Color.class)====");
- esOld = EnumSet.noneOf(Color.class);
- 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();
- }
- }
还可以拷贝一个集合的内容
- import java.util.EnumSet;
- enum Color{
- RED,GREEN,BLUE;
- }
- public class EnumSetDemo05{
- public static void main(String args[]){
- EnumSet<Color> esOld = null;
- EnumSet<Color> esNew = null;
- System.out.println("====EnumSet.copyOf(Color.class)====");
- esOld = EnumSet.noneOf(Color.class);
- 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){
- System.out.print(c+"、");
- }
- System.out.println();
- }
- }
总结:
1、EnumMap和EnumSet,EnumMap是符合Map的操作形式的,而EnumSet基本上就是使用静态方法完成。
2、在操作中大量的使用了枚举.class,这个属于Java反射机制。