您的位置:首页 > 编程语言 > Java开发

Java枚举(二)

2014-05-23 19:50 106 查看
---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流!
----------------------

5.Java类集对枚举的支持——EnumMap、EnumSet

5.1 EnumMap

EnumMap是Map接口的子类,所以本身还是以Map的形式进行操作,即Key------->value的形式,如果要使用EnumMap,首先要创建EnumMap的对象,在创建此对象时必须要指定要操作的枚举类型。

package enumTest;

import java.util.EnumMap;
import java.util.Map;

public class EnumMapDemo {
enum Color {
RED, BLUE, YELLOW;
}

public static void main(String[] args) {
Map<Color, String> mp = null;
mp = new EnumMap<Color, String>(Color.class);
// 将指定的值与指定的键关联,key是关联的键,value是关联的值
mp.put(Color.BLUE, "蓝色");
mp.put(Color.RED, "红色");
mp.put(Color.YELLOW, "黄色");
System.out.println("=====输出全部内容=====");
for (Color c : Color.values()) {
System.out.println(c.ordinal() + "--->" + c.name());
System.out.println(c.name() + "--->" + mp.get(c));//get()方法返回指定键所映射的值,如果没有映射返回null
}
System.out.println();
System.out.println("======输出全部键======");
for(Color c:mp.keySet()){
System.out.println(c.name()+"、");
}
System.out.println("======输出全部值=======");
for(String s: mp.values()){
System.out.println(s+"、");
}
}

}

5.2 EnumSet

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

package enumTest;

import java.util.EnumSet;

public class EnumSetDemo {
enum Color {
RED, BLUE, YELLOW;
}

public static void main(String[] args) {
EnumSet<Color> es = null;
// 将枚举中的所有文件获取到集合中
es = EnumSet.allOf(Color.class);
print(es);
System.out.println();
// 设置一个指定到集合中
EnumSet<Color> es1 = null;
es1 = EnumSet.of(Color.BLUE);
print(es1);
System.out.println();
// 创建可以加入指定类型的对象,创建一个具有指定内容的set
EnumSet<Color> es2 = null;
es2 = EnumSet.noneOf(Color.class);
es2.add(Color.RED);
es2.add(Color.YELLOW);
print(es2);
System.out.println();
// 创建不包含指定内容的Set
EnumSet<Color> es3 = null;
es3 = EnumSet.complementOf(es2);
print(es3);
System.out.println();
// 复制包含指定内容的Set
EnumSet<Color> es4 = null;
es4 = EnumSet.copyOf(es2);
print(es4);

}

private static void print(EnumSet<Color> temp) {
for (Color c : temp) {
System.out.println(c + "、");
}
}

}
6. 让枚举实现一个接口

package enumTest;

public class InterfaceEnumDemo {
enum Color implements InterfaceEnum {
RED {
@Override
public String getColors() {
return "红色";
}
},
BLUE {
@Override
public String getColors() {
return "蓝色";
}
},
YELLOW {
@Override
public String getColors() {
return "黄色";
}
};

}

public static void main(String[] args) {
for (Color c : Color.values()) {
System.out.println(c.getColors() + "、");
}
}
}

interface InterfaceEnum {
String getColors();
}


因为接口中会存在抽象方法,所以,枚举中的每个对象都必须实现此抽象方法。

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流!
----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: