本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
public enum Color {  
  // RED, GREEN, BLANK, YELLOW //若后续没有代码了,此;可以省略。否则不行
  RED, GREEN, BLANK, YELLOW;  
    // 普通静态方法方法  可通过枚举类直接调用
    public static String getName(int index) {  
        for (Color c : Color.values()) {  
            if (c.getIndex() == index) {  
                return c.name;  
        return null;  
    // get方法(set方法是没有必要给出的,因为并不希望改变值)  
    public String getName() {  
        return name;  
    public int getIndex() {  
        return index;  
public enum Color implements Behaviour{  
    RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
    // 成员变量  
    private String name;  
    private int index;  
    // 构造方法  
    private Color(String name, int index) {  
        this.name = name;  
        this.index = index;  
   //接口方法  
    @Override  
    public String getInfo() {  
        return this.name;  
    //接口方法  
    @Override  
    public void print() {  
        System.out.println(this.index+":"+this.name);  
          
public interface Food {  
    enum Coffee implements Food{  
        BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO  
    enum Dessert implements Food{  
        FRUIT, CAKE, GELATO  
    

用法七:关于枚举集合的使用(EnumSet和EnumMap)

java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型

EnumMap基本用法

//方案2:使用EnumMap
    // 使用color作为key,总数Integer作为值即可方便统计
        Map<Color,Integer> enumMap=new EnumMap<>(Color.class);
        for (Clothes clothes:list){
            Color color=clothes.getColor();
            Integer count = enumMap.get(color);
            if(count!=null){
                enumMap.put(color,count+1);
            }else {
                enumMap.put(color,1);
        System.out.println(enumMap.toString());
    

EnumMap作为枚举的专属的集合,我们没有理由再去使用HashMap,毕竟EnumMap要求其Key必须为Enum类型,因而使用Color枚举实例作为key是最恰当不过了,也避免了获取name的步骤。

更重要的是EnumMap效率更高,因为其内部是通过数组实现的(具体源码分析,本文不做过多的分析)。注意EnumMap的key值不能为null,虽说是枚举专属集合,但其操作与一般的Map差不多,概括性来说EnumMap是专门为枚举类型量身定做的Map实现,虽然使用其它的Map(如HashMap)也能完成相同的功能,但是使用EnumMap会更加高效.

它只能接收同一枚举类型的实例作为键值且不能为null,由于枚举类型实例的数量相对固定并且有限,所以EnumMap使用数组来存放与枚举类型对应的值,毕竟数组是一段连续的内存空间,根据程序局部性原理,效率会相当高。

它有三个构造函数:

EnumMap(Class<K> keyType) //创建一个其键类型与指定枚举映射相同的枚举映射,最初包含相同的映射关系(如果有的话)。 EnumMap(EnumMap<K,? extends V> m) //创建一个枚举映射,从指定映射对其初始化。 EnumMap(Map<K,? extends V> m) Map<Color,Integer> enumMap=new EnumMap<>(Color.class); //使用第二种构造 Map<Color,Integer> enumMap2=new EnumMap<>(enumMap); //使用第三种构造 Map<Color,Integer> hashMap = new HashMap<>(); hashMap.put(Color.GREEN, 2); hashMap.put(Color.BLUE, 3); Map<Color, Integer> enumMap = new EnumMap<>(hashMap);