zoukankan      html  css  js  c++  java
  • 枚举

    Enum 类(java.lang)
         作用:限定取值范围.枚举中的值是有序号的,从0开始.可以使用比较器和序列化操作
         定义:public abstract class Enum<E extends Enum<E>>
             extends Object implements Comparable<E>, Serializable
         构造方法:
             protected Enum(String name, int ordinal)
         声明一个枚举类型:
             (public) enum 名称{
                 对象1,对象2,...对象n;
             }
         常用方法:
             protected final Object clone() throws CloneNotSupportedException{}:克隆枚举对象
             public final int compareTo(E o){}:对象比较
             public final boolean equals(Object other){}:比较枚举对象,相等返回true;
             public final int hashCode(){}:返回枚举常量的hashcode;
             public final String name(){}:返回此枚举的名称;
             public final int ordinal(){}:返回此枚举常量的序数
             public static <T extends Enum<T>> T valueOf(Class<T> enumType,String name){}:返回带指定名称,指定枚举类型的枚举常量
        
         代码演示:
         

      1 enum Color{
      2          RED,GREEN,BLUE;
      3      }
      4 
      5      public class EnumDemo01{
      6          public static void main(String[] args){
      7              //取出一个值
      8             Color c = Color.RED;
      9              System.out.println(c);
     10              System.out.println("==="+c.ordinal());
     11 
     12              //迭代输出枚举对象
     13             for(Color c1 : Color.values()){    //values()方法可将枚举转为对象数组(API中没有查到??)
     14                  System.out.println(c1);
     15              }
     16 
     17              print(c);
     18 
     19              //valueOf()方法取出枚举对象
     20             Color c2 = Enum.valueOf(Color.class, "RED");//注意valueOf()方法中的O大写,第二个参数为字符串,需加"";
     21              System.out.println(c2+"****");
     22 
     23 
     24          }
     25              //用于switch判断
     26             public static void print(Color color){
     27                 switch(color){
     28                      case RED:{
     29                          System.out.println("");
     30                          break;
     31                      }
     32                      case GREEN:{
     33                          System.out.println("绿");
     34                          break;
     35                      }
     36                      case BLUE:
     37                          System.out.println("");
     38                          break;
     39                      default:
     40                          System.out.println("未知");
     41                          break;
     42                  }
     43              }
     44      }
                                         

    二.EnumSet 类(java.util)
         介绍:EnumSet 为接口的子类,所以里面的内容无法重复,使用EnumSet不能直接使用new实例化,提供了很多静态方法
         定义:public abstract class EnumSet<E extends Enum<E>> extends AbstractSet<E> implements Cloneable, Serializable
         静态方法:
             public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType){}:将枚举中的所有对象放置到EnumSet中;参数为.class对象;
             public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType){}:创建一个可以包含指定类的空集合;参数为.class对象;
             public static <E extends Enum<E>> EnumSet<E> of(E e){}:创建一个包含部分枚举对象的set集合,有多个重载方法;
             public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c){}:从一个Collection中指定EnumSet对象;
             public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s){}:Creates an enum set with the same element type as the specified enum set,
                                                             initially containing all the elements of this type that are not contained in the specified set.
            
        
         代码演示:
           

      1  import java.util.EnumSet;
      2          enum Color{
      3              RED,BLUE,GREEN;
      4          }
      5          public class ColorDemo02{
      6              public static void main(String[] args){
      7                  EnumSet<Color> es = null;
      8                  //allOf()方法,将全部枚举对象放到EnumSet集合中,以后可面向set集合操作
      9                 es = EnumSet.allOf(Color.class);
     10                  for(Color c : es){
     11                      System.out.println(c);
     12                  }
     13 
     14                  //of()设置只包含一个枚举对象的EnumSet
     15                  es = EnumSet.of(Enum.valueOf(Color.class,"GREEN"));
     16                  System.out.println(es);
     17 
     18                  //noneof()创建只能放入指定类型的集合
     19                 es = EnumSet.noneOf(Color.class);
     20                  es.add(Color.RED);
     21                  //es.add("jack");//(参数不匹配; String无法转换为Color)
     22                  System.out.println(es);
     23 
     24                  //complementOf()创建一个不包含es枚举集合中对象的新集合esNew  
     25                  EnumSet<Color> esNew = EnumSet.complementOf(es);//esNew = Color - es
     26                 System.out.println(esNew);
     27 
     28                  //copyOf()复制已有集合
     29                 EnumSet<Color> esNew1 = EnumSet.copyOf(esNew);
     30                  System.out.println(esNew1);
     31             }
     32          }

    三.EnumMap 类(java.util)
         定义:public class EnumMap<K extends Enum<K>,V> extends AbstractMap<K,V> implements Serializable, Cloneable
         构造方法:public EnumMap(Class<K> keyType)
         常用方法:与Map集合一致
             public Set<Map.Entry<K,V>> entrySet(){}:获取键值对对象
             public V get(Object key){}:通过key获取value
             public Set<K> keySet(){}:获取键集
             public V put(K key,V value){}:添加元素
             public Collection<V> values(){}:获取value集合
         代码演示:
           

      1  import java.util.EnumMap;
      2          import java.util.Map;
      3 
      4          enum Color{
      5              RED,GREEN,BLUE;
      6          }
      7          public class EnumMapDemo{
      8              public static void main(String[] args){
      9                  Map<Color,String> map = new EnumMap<>(Color.class);
     10                  map.put(Color.RED,"");
     11                  map.put(Color.GREEN,"绿");
     12                  map.put(Color.BLUE,"");
     13                  //获取所有内容
     14                 for(Color c : Color.values()){ //面向枚举类
     15                     System.out.println(c+"======"+map.get(c));
     16                  }
     17                  //获取键集
     18                 for(Color c: map.keySet()){ //面向枚举集合
     19                     System.out.println(c);
     20                  }
     21 
     22                  //获取value集合
     23                 for(String s: map.values()){
     24                      System.out.println(s);
     25                  }
     26 
     27              }
     28          }

  • 相关阅读:
    C#综合揭秘——细说多线程(上)
    Tinyxml2学习
    GNSS数据下载网站整理,包括gamit、bernese更新文件地址[2020.04更新]
    c#中xml增删查改
    C#比较两个对象中的指定字段值是否相等
    C#数据导出帮助类
    ajax文件下载
    C#中使用NPOI进行DataTable和Excel互转
    使用 ICSharpCode.SharpZipLib.Zip压缩解压文件
    C#DataTable转List<T>互转
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7128852.html
Copyright © 2011-2022 走看看