【枚举】_类集对Enum的支持笔记
2014-10-01 23:40
330 查看
【枚举】_类集对Enum的支持笔记
分类: Java【枚举】_类集对Enum的支持笔记
本章目标:
掌握EnumMap类的使用
掌握EnumSet类的使用
3、具体内容
3.1、EnumMap
定义格式:
public class EnumMap<K extends Enum<K>,V>
extends AbstractMap<K,V>
implements Serializable,Cloneable
范例:
[java] view
plaincopyprint?
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集合之中。
[java] view
plaincopyprint?
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();
}
}
范例:只设置一个内容到集合
[java] view
plaincopyprint?
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();
}
}
创建只能放入指定枚举类型的集合
可能同时有多个类型的枚举对象,但是一个集合中只要求放入指定类型的枚举。
[java] view
plaincopyprint?
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();
}
}
还可以创建不包含制定元素的集合。
[java] view
plaincopyprint?
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();
}
}
还可以拷贝一个集合的内容
[java] view
plaincopyprint?
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反射机制。
相关文章推荐
- 【枚举】_类集对Enum的支持笔记
- 枚举 _类集对Enum的支持
- 14. JAVA 枚举(Enum、类集EnumMap&EnumSet 、实现接口、定义抽象方法) ----- 学习笔记
- RealSense SDK 开发笔记 (二)枚举DCM下的摄像机与支持的影像串流
- Java学习笔记-枚举(enum)
- java学习笔记之枚举类enum(转载)
- 【枚举】_Enum笔记
- 【枚举】_Enum笔记
- python学习笔记:利用__getattr__属性实现枚举Enum
- python入门笔记(Day7)--slots,@property,MixIn,定制(str,iter,getitem,getattr,call)枚举(Enum)元type,metaclass,ORM
- 类集对枚举的支持
- 《高性能MySQL》笔记-枚举(ENUM)类型
- 曲线救国,使枚举enum支持字符串string
- java笔记(十):枚举(enum)
- Enum支持序列化吗以及设计模式策略枚举
- 类集对enum的支持。
- 19---java中枚举03(类集对枚举的支持)
- 黑马程序员_学习笔记:11) Jdk5.0新特性:增强for循环、可变参数(...)、静态导入、枚举:关键字 enum、自动拆装箱、泛型
- Effective java 第2版 - 笔记(01) 单例(Singleton)的枚举(enum)实现
- Java学习笔记21 枚举类型enum、Enu…