---------------------- 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培训、期待与您交流! ----------------------