【枚举】_类集对Enum的支持笔记

来源:互联网 发布:淘宝卖家补偿 质量 编辑:程序博客网 时间:2024/05/12 19:47

【枚举】_类集对Enum的支持笔记

分类: Java
【枚举】_类集对Enum的支持笔记

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

3、具体内容
3.1、EnumMap

定义格式:
public class EnumMap<K extends Enum<K>,V>
extends AbstractMap<K,V>
implements Serializable,Cloneable

范例:
[java] view plaincopyprint?
  1. import java.util.EnumMap;  
  2. import java.util.Map;  
  3. enum Color{  
  4.     RED,GREEN,BLUE;  
  5. }  
  6. public class EnumMapDemo{  
  7.     public static void main(String args[]){  
  8.         Map<Color,String> desc = null;  
  9.         desc = new EnumMap<Color,String>(Color.class);//实例化EnumMap对象  
  10.         desc.put(Color.RED,"红色");  
  11.         desc.put(Color.GREEN,"绿色");  
  12.         desc.put(Color.BLUE,"蓝色");  
  13.         System.out.println("=====输出全部的内容=====");  
  14.         for(Color c:Color.values()){  
  15.             System.out.println(c.name()+"-->"+desc.get(c));          
  16.         }  
  17.         System.out.println("=====输出全部的键值=====");  
  18.         for(Color c:desc.keySet()){  
  19.             System.out.print(c.name()+"、");          
  20.         }  
  21.         System.out.println();  
  22.         System.out.println("=====输出全部的内容=====");  
  23.         for(String s:desc.values()){  
  24.             System.out.println(s+"、");          
  25.         }  
  26.     }  
  27. }  



3.2、EnumSet

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

依次验证EnumSet类的方法

范例:将全部的集合设置到EnumSet集合之中。

[java] view plaincopyprint?
  1. import java.util.EnumSet;  
  2. enum Color{  
  3.     RED,GREEN,BLUE;  
  4. }  
  5. public class EnumSetDemo01{  
  6.     public static void main(String args[]){  
  7.         EnumSet<Color> es = null;  
  8.         System.out.println("====EnumSet.allOf(Color.class)=====");  
  9.         es = EnumSet.allOf(Color.class);//将枚举的全部类型设置到EnumSet对象之中  
  10.         print(es);  
  11.     }  
  12.     public static void print(EnumSet<Color> temp){//专门的输出操作  
  13.         for(Color c:temp){  
  14.             System.out.print(c+"、");  
  15.         }  
  16.         System.out.println();  
  17.     }  
  18. }  


范例:只设置一个内容到集合

[java] view plaincopyprint?
  1. import java.util.EnumSet;  
  2. enum Color{  
  3.     RED,GREEN,BLUE;  
  4. }  
  5. public class EnumSetDemo02{  
  6.     public static void main(String args[]){  
  7.         EnumSet<Color> es = null;  
  8.         System.out.println("====EnumSet.of(Color.BLUE)======");  
  9.         es = EnumSet.of(Color.BLUE);//将枚举的一个内容设置到EnumSet对象之中  
  10.         print(es);  
  11.   
  12.     }  
  13.     public static void print(EnumSet<Color> temp){//专门的输出操作  
  14.         for(Color c:temp){  
  15.             System.out.print(c+"、");  
  16.         }  
  17.         System.out.println();  
  18.     }  
  19. }  



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

[java] view plaincopyprint?
  1. import java.util.EnumSet;  
  2. enum Color{  
  3.     RED,GREEN,BLUE;  
  4. }  
  5. public class EnumSetDemo03{  
  6.     public static void main(String args[]){  
  7.         EnumSet<Color> es = null;    //声明一个EnumSet对象  
  8.         System.out.println("=====EnumSet.noneOf(Color.class)======");  
  9.         es = EnumSet.noneOf(Color.class);//将枚举的全部类型设置到EnumSet对象之中  
  10.         es.add(Color.RED);    //增加内容  
  11.         es.add(Color.GREEN);    //增加内容  
  12.         print(es);          
  13.     }  
  14.     public static void print(EnumSet<Color> temp){  
  15.         for(Color c:temp){  
  16.             System.out.print(c+"、");  
  17.         }  
  18.         System.out.println();  
  19.     }  
  20.   
  21. }  



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

[java] view plaincopyprint?
  1. import java.util.EnumSet;  
  2. enum Color{  
  3.     RED,GREEN,BLUE;  
  4. }  
  5. public class EnumSetDemo04{  
  6.     public static void main(String args[]){  
  7.         EnumSet<Color> esOld = null;  
  8.         EnumSet<Color> esNew = null;  
  9.         System.out.println("====EnumSet.complementOf(Color.class)====");  
  10.         esOld = EnumSet.noneOf(Color.class);  
  11.         esOld.add(Color.RED);  
  12.         esOld.add(Color.GREEN);  
  13.         esNew = EnumSet.complementOf(esOld);    //不包括指定内容  
  14.         print(esNew);  
  15.     }  
  16.     public static void print(EnumSet<Color> temp){  
  17.         for(Color c:temp){        // 循环输出EnumSet中的内容  
  18.             System.out.print(c+"、");  
  19.         }  
  20.         System.out.println();          
  21.     }  
  22. }  



还可以拷贝一个集合的内容

[java] view plaincopyprint?
  1. import java.util.EnumSet;  
  2. enum Color{  
  3.     RED,GREEN,BLUE;  
  4. }  
  5. public class EnumSetDemo05{  
  6.     public static void main(String args[]){  
  7.         EnumSet<Color> esOld = null;  
  8.         EnumSet<Color> esNew = null;  
  9.         System.out.println("====EnumSet.copyOf(Color.class)====");  
  10.         esOld = EnumSet.noneOf(Color.class);  
  11.         esOld.add(Color.RED);  
  12.         esOld.add(Color.GREEN);  
  13.         esNew = EnumSet.copyOf(esOld);    //从已有的集合拷贝过来  
  14.         print(esNew);  
  15.     }  
  16.     public static void print(EnumSet<Color> temp){  
  17.         for(Color c:temp){  
  18.             System.out.print(c+"、");          
  19.         }  
  20.         System.out.println();  
  21.     }  
  22. }  

总结:
1、EnumMap和EnumSet,EnumMap是符合Map的操作形式的,而EnumSet基本上就是使用静态方法完成。
2、在操作中大量的使用了枚举.class,这个属于Java反射机制。
0 0
原创粉丝点击