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

  • 相关阅读:
    Sentinel Dashboard(基于1.8.1)流控规则持久化到Nacos——涉及部分Sentinel Dashboard源码改造
    测试平台MeterSphere源码入门
    Java:利用BigDecimal类巧妙处理Double类型精度丢失
    SpringBoot整合任务调度框架Quartz及持久化配置
    任务调度框架Quartz快速入门!
    Kafka超详细学习笔记【概念理解,安装配置】
    Windows环境下Zookeeper安装配置
    SpringData JPA利用Specification多条件查询
    SpringBoot事件监听机制及观察者模式/发布订阅模式
    详解Java中的IO输入输出流!
  • 原文地址:https://www.cnblogs.com/alsf/p/6262474.html
Copyright © 2011-2022 走看看