枚举:集合对enum的支持,EnumSet,EnumMap
2017-11-01 15:28
441 查看
EnumSet类
定义:set接口的子类,所以内容无法重复,在使用EnumSet时不能直接使用new关键字为其实例化,所以此类中提供了很多静态方法。枚举 set 中所有键都必须来自单个枚举类型,该枚举类型在创建 set 时显式或隐式地指定。public abstract class EnumSet<E extends Enum<E>> extends AbstractSet<E> implements Cloneable, Serializable
AbstractSet:所有set类型集合的最大父类
Cloneable:合法的对所有实例进行克隆(按字段复制)
Serializable:实现此接口用来实现对象序列化和反序列化
常用方法:
.allOf()创建一个包括指定元素类型的所有元素枚举set;
.complementOf()创建一个指定set与指定枚举set相同的枚举set,最初不包含指定set中所不包含的所有类型元素;
.noneOf()创建一个指定元素类型的空的枚举类型set;
示例:
public enum Entity { white("白色",5),red("红色",4),black("黑色",3),blue("蓝色",2),green("绿色",1); private String name ; private int size ; Entity(String name , int size) { this.name = name; this.size = size ; } public void setName(String name) { this.name = name; } public String getName() { return name ; } public void setSize(int size) { this.size = size ; } public int getSize() { return size ; } }
public class EnumSetExample { public static void main(String[] args) { EnumSet<Entity> enumset = EnumSet.allOf(Entity.class); System.out.println(enumset); System.out.println("------------------------"); EnumSet<Entity> enumSet2 = EnumSet.noneOf(Entity.class); enumSet2.add(Entity.white); System.out.println(enumSet2); System.out.println("------------------------"); EnumSet<Entity> enumSet3 = EnumSet.complementOf(enumSet2); System.out.println(enumSet3); } }
运行结果:
[white, red, black, blue, green]
------------------------
[white]
------------------------
[red, black, blue, green]
EnumMap类
定义:与枚举类型键一起使用的专用Map实现,枚举映射中所有的键都必须来自枚举类型,值可以自由定义。public class EnumMap<K extends Enum<K>,V> extends AbstractMap<K,V> implements Serializable, Cloneable
AbstractMap:所有Map类型集合的最大父类
示例:
public class EntityMapExample { public static void main(String[] args) { EnumMap<Entity, String> enumMap = new EnumMap<>(Entity.class); for (Entity entity : Entity.values()) { enumMap.put(entity,entity.getName()); } System.out.println(enumMap);//直接打印集合 System.out.println("--------------------------"); System.out.println("分别取得Key/Value:"); Set<Map.Entry<Entity, String>> set = enumMap.entrySet(); Iterator<Map.Entry<Entity, String >> iterator = set.iterator() ; while (iterator.hasNext()) { Map.Entry<Entity, String> me = iterator.next(); System.out.println(me.getKey()+"="+me.getValue());//以迭代器循环的方式分别取得键值对 } } }运行结果:
{white=白色, red=红色, black=黑色, blue=蓝色, green=绿色}
--------------------------
分别取得Key/Value:
white=白色
red=红色
black=黑色
blue=蓝色
green=绿色
相关文章推荐
- JDK5.0新特性:枚举类型enum、枚举集合EnumSet、枚举映射EnumMap
- Java中的枚举——EnumMap与EnumSet
- MySQL字段之集合(set)枚举(enum)
- 怎样让enum枚举支持string
- 关于枚举,enum、Enum、EnumSet、RegularEnumSet、JumboEnumSet
- 【枚举】_类集对Enum的支持笔记
- 【枚举】_类集对Enum的支持笔记
- Enum支持序列化吗以及设计模式策略枚举
- 说说Java中的枚举——EnumMap与EnumSet
- 14. JAVA 枚举(Enum、类集EnumMap&EnumSet 、实现接口、定义抽象方法) ----- 学习笔记
- ATL源码学习5---集合与枚举接口支持
- OpenEJB 3.0支持对枚举和集合的依赖注入及OSGi和EJB 3.0特性
- java 获取未知枚举的集合(get unknown enum list)
- Java中的枚举――EnumMap与EnumSet
- C#中DataTable与泛型集合互转(支持泛型集合中对象包含枚举)
- Enum、EnumMap、EnumSet的用法讲解
- OpenEJB 3.0支持对枚举和集合的依赖注入及OSGi和EJB 3.0特性
- 枚举详解 自定义方法 EnumSet,EnumMap 的应用
- Java中Enum、EnumMap、EnumSet使用示例
- OpenEJB 3.0支持对枚举和集合的依赖注入及OSGi和EJB 3.0特性