您的位置:首页 > 其它

【枚举】_类集对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反射机制。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: