类集对enum的支持。
2017-01-08 18:27
405 查看
1,EmumMap
发现继承了abstractMap类,说明是Map子类。
继承了Serializable,说明这个类可以被序列化。
继承了Cloneable,说明了这个类可以被克隆。
实例1代码package 类集;import java.util.EnumMap;
}
System.out.println("====== 输出全部的键值 ======") ;
for(Color c:desc.keySet()){ //遍历emumMap对象的键值集合,集合的单元key的类型是Color枚举类型。
System.out.print(+ "、") ;
System.out.println() ;
System.out.println("====== 输出全部的内容 ======") ;
for(String s:desc.values()){ //
System.out.print(s + "、") ;[/code]
输出结果:
依次验证方法:
输出:
上面成功将枚举的全部类型设置到enumSet中。
范例:
输出结果:
范例:
输出结果:
范例:
输出结果:
发现,esnew对象中值为枚举类中除了esold对象中的值的其他值。例如这里是去掉了esold里面的RED,GREEN后,枚举类中剩下的BLUE.
范例:
结果:
总结:
1,enumMap是符合Map操作形式的,而enumSet基本就是静态方法完成的。
2,操作中大量使用了枚举.Class。反射机制。
public class EnumMap<K extends Enum<K>,V>extends AbstractMap<K,V>implements Serializable, Cloneable
发现继承了abstractMap类,说明是Map子类。
继承了Serializable,说明这个类可以被序列化。
继承了Cloneable,说明了这个类可以被克隆。
构造方法:
常用方法:
实例1代码package 类集;import java.util.EnumMap;
import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeSet; enum Color{ RED,GREEN,BLUE ; } public class test1{ public static void main(String args[]){ Map<Color,String> desc = null ; // 定义Map对象,同时指定类型 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)) ; //[code]get(Object key)返回对应键所对应的内容。
}
System.out.println("====== 输出全部的键值 ======") ;
for(Color c:desc.keySet()){ //遍历emumMap对象的键值集合,集合的单元key的类型是Color枚举类型。
System.out.print(+ "、") ;
System.out.println() ;
System.out.println("====== 输出全部的内容 ======") ;
for(String s:desc.values()){ //
values()返回此映射中所包含值的
Collection视图。
System.out.print(s + "、") ;[/code]
} } }
输出结果:
====== 输出全部的内容 ====== RED --> 红色 GREEN --> 绿色 BLUE --> 蓝色 ====== 输出全部的键值 ====== RED、GREEN、BLUE、 ====== 输出全部的内容 ====== 红色、绿色、蓝色、
2,EnumSet
EnumSet是Set子类,里面内容无法重复,使用的时候,不能直接使用关键字new实例化。所以提供了很多静态方法。依次验证方法:
1,将全部集合设置到EnumSet集合中。
allOf(Class<E> elementType)
package 类集; import java.util.EnumSet; enum Color{ RED,GREEN,BLUE ; } public class test1{ public static void main(String args[]){ EnumSet<Color> es = null ; // 声明一个EnumSet对象 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){ // 循环输出EnumSet中的内容 System.out.print(c + "、") ; } System.out.println() ; } }
输出:
======== EnumSet.allOf(Color.class) ===== RED、GREEN、BLUE、
上面成功将枚举的全部类型设置到enumSet中。
2,只设置集合中一个对象到enumSet中。
static <E extends Enum<E>> EnumSet<E> of(E e) 创建一个最初包含指定元素的枚举 set。 static <E extends Enum<E>> EnumSet<E> of(E first, E... rest) 创建一个最初包含指定元素的枚举 set。 static <E extends Enum<E>> EnumSet<E> of(E e1, E e2) 创建一个最初包含指定元素的枚举 set。 static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3) 创建一个最初包含指定元素的枚举 set。 static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4) 创建一个最初包含指定元素的枚举 set。 static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4, E e5) 创建一个最初包含指定元素的枚举 set。
范例:
package 类集; import java.util.EnumSet; enum Color{ RED,GREEN,BLUE ; } public class test1{ public static void main(String args[]){ EnumSet<Color> es = null ; // 声明一个EnumSet对象 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){ // 循环输出EnumSet中的内容 System.out.print(c + "、") ; } System.out.println() ; } }
输出结果:
======== EnumSet.of(Color.BLUE) ===== BLUE、
创建只能放入指定枚举类型的集合。
可能同时有多个类型的枚举对象,但是一个集合中只要求放入指定类型的枚举。static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) 创建一个具有指定元素类型的空枚举 set。
范例:
package 类集; import java.util.EnumSet; enum Color{ RED,GREEN,BLUE ; } public class test1{ 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){ // 循环输出EnumSet中的内容 System.out.print(c + "、") ; } System.out.println() ; } }
输出结果:
======== EnumSet.noneOf(Color.class) ===== RED、GREEN、
还可以创建不包含指定元素的集合。
static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s) 创建一个其元素类型与指定枚举 set 相同的枚举 set,最初包含指定 set 中所不 包含的此类型的所有元素。
范例:
package 类集; import java.util.EnumSet; enum Color{ RED,GREEN,BLUE ; } public class test1{ public static void main(String args[]){ EnumSet<Color> esOld = null ; // 声明一个EnumSet对象 EnumSet<Color> esNew = null ; System.out.println("======== EnumSet.complementOf(Color.class) =====") ; esOld = EnumSet.noneOf(Color.class) ; // 将枚举的全部类型设置到EnumSet对象之中 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() ; } }
输出结果:
======== EnumSet.complementOf(Color.class) ===== BLUE、
发现,esnew对象中值为枚举类中除了esold对象中的值的其他值。例如这里是去掉了esold里面的RED,GREEN后,枚举类中剩下的BLUE.
拷贝集合中的值给另一个enumSet对象。
static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c) 创建一个从指定 collection 初始化的枚举 set。
范例:
package 类集; import java.util.EnumSet; enum Color{ RED,GREEN,BLUE ; } public class test1{ public static void main(String args[]){ EnumSet<Color> esOld = null ; // 声明一个EnumSet对象 EnumSet<Color> esNew = null ; System.out.println("======== EnumSet.copyOf(Color.class) =====") ; esOld = EnumSet.noneOf(Color.class) ; // 将枚举的全部类型设置到EnumSet对象之中 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){ // 循环输出EnumSet中的内容 System.out.print(c + "、") ; } System.out.println() ; } }
结果:
======== EnumSet.copyOf(Color.class) ===== RED、GREEN、
总结:
1,enumMap是符合Map操作形式的,而enumSet基本就是静态方法完成的。
2,操作中大量使用了枚举.Class。反射机制。
相关文章推荐
- 枚举 _类集对Enum的支持
- 【枚举】_类集对Enum的支持笔记
- 【枚举】_类集对Enum的支持笔记
- 怎样让enum枚举支持string
- 类集对枚举的支持
- 枚举:集合对enum的支持,EnumSet,EnumMap
- VC6不支持namespace::union/struct/enum::member的引用方式
- 绑定Enum到ASP.NET数据绑定控件的完美解决方案[05/26修订]——增加支持第三方枚举描述,支持二进制与过的枚举值
- 5.9 enum--支持枚举类型
- 绑定Enum到ASP.NET数据绑定控件的完美解决方案[05/26修订]——增加支持第三方枚举描述,支持二进制与过的枚举值
- 枚举---java类集对枚举的支持
- 5.9 enum--支持枚举类型
- dbutils 重写BeanProcessor 部分方法,支持enum的转换
- 5.9 enum--支持枚举类型
- dedecms联动模型支持dede_sys_enum的father字段自动追加内容
- Enum支持序列化吗以及设计模式策略枚举
- 小发现:enum支持中文
- Java7版本: switch语句支持String、Enum类型(JDK1.5)与原来byte、short、char和int.
- struts2的action支持自动转换枚举类型(enum)的实例变量
- 19---java中枚举03(类集对枚举的支持)