您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第14章:枚举】_类集对Enum的支持
发布时间:2021-01-05 18:12:12编辑:雪饮阅读()
EnumMap也是一个以操作键值对的方式来管理类集的,它作用于enum类集
import java.util.EnumMap ;
import java.util.Map ;
enum Color{
RED,GREEN,BLUE;
};
public class Hello{
public static void main(String args[]){
Map<Color,String> desc =new EnumMap<Color,String>(Color.class) ;
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.print(s + "、") ;
}
}
};
EnumSet也可以做为enum类集的载体
import java.util.EnumSet ;
enum Color{
RED,GREEN,BLUE;
};
public class Hello{
public static void main(String args[]){
EnumSet<Color> es = EnumSet.allOf(Color.class) ;
System.out.println("======== EnumSet.allOf(Color.class) =====") ;
print(es) ;
}
public static void print(EnumSet<Color> temp){ // 专门的输出操作
for(Color c:temp){ // 循环输出EnumSet中的内容
System.out.println(c) ;
}
System.out.println() ;
}
};
D:\>javac Hello.java
D:\>java Hello
======== EnumSet.allOf(Color.class) =====
RED
GREEN
BLUE
EnumSet一般默认用allOf把全部enum载入,也可以用of单独载入某一个枚举值
import java.util.EnumSet ;
enum Color{
RED,GREEN,BLUE;
};
public class Hello{
public static void main(String args[]){
EnumSet<Color> es = EnumSet.of(Color.BLUE) ;
System.out.println("======== EnumSet.of(Color.BLUE) =====") ;
print(es) ;
}
public static void print(EnumSet<Color> temp){
for(Color c:temp){
System.out.println(c) ;
}
System.out.println() ;
}
};
D:\>javac Hello.java
D:\>java Hello
======== EnumSet.of(Color.BLUE) =====
BLUE
EnumSet的noneOf方法可以设置空枚举类集载体
设置空枚举类集载体之后还可以继续增加新的枚举元素
import java.util.EnumSet ;
enum Color{
RED,GREEN,BLUE;
};
public class Hello{
public static void main(String args[]){
EnumSet<Color> es = EnumSet.noneOf(Color.class) ;
System.out.println("======== EnumSet.of(Color.BLUE) =====") ;
es.add(Color.RED);
es.add(Color.GREEN);
print(es) ;
}
public static void print(EnumSet<Color> temp){
for(Color c:temp){
System.out.println(c) ;
}
System.out.println() ;
}
};
D:\>javac Hello.java
D:\>java Hello
======== EnumSet.of(Color.BLUE) =====
RED
GREEN
其实这样操作感觉就是有点多余,没有什么意义。
EnumSet的complementOf方法提供enum类集取反
即对一个已经实例化的EnumSet枚举类集实例取反,并不是排序位置取反,而是以该枚举类型的所有类型为参照,仅仅取出该枚举类型的所有类型枚举值中不包含已经实例化的这个EnumSet枚举类集实例中的枚举值。
import java.util.EnumSet ;
enum Color{
RED,GREEN,BLUE;
};
public class Hello{
public static void main(String args[]){
EnumSet<Color> es = EnumSet.noneOf(Color.class) ;
es.add(Color.RED);
es.add(Color.GREEN);
EnumSet<Color> es2 = EnumSet.complementOf(es) ;
print(es2) ;
}
public static void print(EnumSet<Color> temp){
for(Color c:temp){
System.out.println(c) ;
}
System.out.println() ;
}
};
D:\>javac Hello.java
D:\>java Hello
BLUE
EnumSet的copyOf可以将一个已经EnumSet实例中的枚举类集拷贝而形成一个新的EnumSet实例
import java.util.EnumSet ;
enum Color{
RED,GREEN,BLUE;
};
public class Hello{
public static void main(String args[]){
EnumSet<Color> es = EnumSet.noneOf(Color.class) ;
es.add(Color.RED);
es.add(Color.GREEN);
EnumSet<Color> es2 = EnumSet.copyOf(es) ;
print(es2) ;
}
public static void print(EnumSet<Color> temp){
for(Color c:temp){
System.out.println(c) ;
}
System.out.println() ;
}
};
D:\>javac Hello.java
D:\>java Hello
RED
GREEN
关键字词:java,Enum
上一篇:【第14章:枚举】_Enum