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

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

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

3、具体内容
3.1、EnumMap

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

范例:
import java.util.EnumMap;
import java.util.Map;
enum Color{
    RED,GREEN,BLUE;
}
public class EnumMapDemo{
    public static void main(String args[]){
        Map<Color,String> desc = null;
        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));        
        }
        System.out.println("=====输出全部的键值=====");
        for(Color c:desc.keySet()){
            System.out.print(c.name()+"、");        
        }
        System.out.println();
        System.out.println("=====输出全部的内容=====");
        for(String s:desc.values()){
            System.out.println(s+"、");        
        }
    }
}



3.2、EnumSet

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

依次验证EnumSet类的方法

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

import java.util.EnumSet;
enum Color{
    RED,GREEN,BLUE;
}
public class EnumSetDemo01{
    public static void main(String args[]){
        EnumSet<Color> es = null;
        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){
            System.out.print(c+"、");
        }
        System.out.println();
    }
}


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

import java.util.EnumSet;
enum Color{
    RED,GREEN,BLUE;
}
public class EnumSetDemo02{
    public static void main(String args[]){
        EnumSet<Color> es = null;
        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){
            System.out.print(c+"、");
        }
        System.out.println();
    }
}



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

import java.util.EnumSet;
enum Color{
    RED,GREEN,BLUE;
}
public class EnumSetDemo03{
    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){
            System.out.print(c+"、");
        }
        System.out.println();
    }

}



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

import java.util.EnumSet;
enum Color{
    RED,GREEN,BLUE;
}
public class EnumSetDemo04{
    public static void main(String args[]){
        EnumSet<Color> esOld = null;
        EnumSet<Color> esNew = null;
        System.out.println("====EnumSet.complementOf(Color.class)====");
        esOld = EnumSet.noneOf(Color.class);
        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();        
    }
}



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

import java.util.EnumSet;
enum Color{
    RED,GREEN,BLUE;
}
public class EnumSetDemo05{
    public static void main(String args[]){
        EnumSet<Color> esOld = null;
        EnumSet<Color> esNew = null;
        System.out.println("====EnumSet.copyOf(Color.class)====");
        esOld = EnumSet.noneOf(Color.class);
        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){
            System.out.print(c+"、");        
        }
        System.out.println();
    }
}

总结:
1、EnumMap和EnumSet,EnumMap是符合Map的操作形式的,而EnumSet基本上就是使用静态方法完成。
2、在操作中大量的使用了枚举.class,这个属于Java反射机制。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

e421083458

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值