zoukankan      html  css  js  c++  java
  • 类集对enum的支持。

    1,EmumMap

    public class EnumMap<K extends Enum<K>,V>extends AbstractMap<K,V>implements Serializable, Cloneable

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

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

    继承了Cloneable,说明了这个类可以被克隆。

    构造方法:

    常用方法:

    实例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集合中。

    allOf(Class<E> elementType)

    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。反射机制。

  • 相关阅读:
    Java Web 网络留言板2 JDBC数据源 (连接池技术)
    Java Web 网络留言板3 CommonsDbUtils
    Java Web ConnectionPool (连接池技术)
    Java Web 网络留言板
    Java Web JDBC数据源
    Java Web CommonsUtils (数据库连接方法)
    Servlet 起源
    Hibernate EntityManager
    Hibernate Annotation (Hibernate 注解)
    wpf控件设计时支持(1)
  • 原文地址:https://www.cnblogs.com/alsf/p/6262474.html
Copyright © 2011-2022 走看看