`

EnumMap与EnumSet

阅读更多
说说Java中的枚举——EnumMap与EnumSet

    为了更好的支持枚举类型,java.util中添加了两个新类:EnumMap和EnumSet。使用它们可以更高效的操作枚举类型。下面我一一介绍给你:

    EnumMap是专门为枚举类型量身定做的Map实现。虽然使用其它的Map实现(如HashMap)也能完成枚举类型实例到值得映射,但是使用EnumMap会更加高效:它只能接收同一枚举类型的实例作为键值,并且由于枚举类型实例的数量相对固定并且有限,所以EnumMap使用数组来存放与枚举类型对应的值。这使得EnumMap的效率非常高。

    提示:EnumMap在内部使用枚举类型的ordinal()得到当前实例的声明次序,并使用这个次序维护枚举类型实例对应值在数组的位置。

    下面是使用EnumMap的一个代码示例。枚举类型DataBaseType里存放了现在支持的所有数据库类型。针对不同的数据库,一些数据库相关的方法需要返回不一样的值,示例中getURL就是一个。

Java代码

//现支持的数据库类型枚举类型定义

public enum DataBaseType{

                   MYSQL,ORACLE,DB2,SQLSERVER

}

 

//某类中定义的获取数据库URL的方法以及EnumMap的声明。

……

private EnumMap<DataBaseType ,String> urls =

new EnumMap<DataBaseType ,String>(DataBaseType.class);

                  

public DataBaseInfo(){

         urls.put(DataBaseType.DB2,"jdbc:db2://localhost:5000/sample");

         urls.put(DataBaseType.MYSQL,"jdbc:mysql://localhost/mydb");

         urls.put(DataBaseType.ORACLE,"jdbc:oracle:thin:@localhost:1521:sample");

         urls.put(DataBaseType.SQLSERVER,"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb");

}

 

/**

* 根据不同的数据库类型,返回对应的URL

* @param type     DataBaseType枚举类新实例

* @return

*/

public String getURL(DataBaseType type){

         return this.urls.get(type);

}

    在实际使用中,EnumMap对象urls往往是由外部负责整个应用初始化的代码来填充的。这里为了演示方便,类自己做了内容填充。

    像例子中那样,使用EnumMap可以很方便的为枚举类型在不同的环境中绑定到不同的值上。如:例子中getURL绑定到URL上,在其它的代码中可能又被绑定到数据库驱动上去。

    EnumSet是枚举类型的高性能Set实现。它要求放入它的枚举常量必须属于同一枚举类型。EnumSet提供了许多工厂方法以便于初始化,见下表:

    EnumSet作为Set接口实现,它支持对包含的枚举常量的遍历:

Java代码

for(Operation op : EnumSet.range(Operation.PLUS , Operation.MULTIPLY)) {

                   doSomeThing(op);

}

分享到:
评论

相关推荐

    一文弄懂EnumMap和EnumSet

    【EnumMap和EnumSet详解】 在Java编程中,当我们需要处理特定枚举类型(Enum)作为键(Key)的映射关系时,EnumMap和EnumSet成为两种非常实用的工具类。它们是Java集合框架中专门为枚举类型设计的高效容器,提供了...

    说说Java中的枚举 转 可以了,够了 包括EnumSet(Map)

    这篇博客将深入探讨Java枚举的特性和使用方法,包括`EnumSet`和`EnumMap`这两个与枚举相关的数据结构。 首先,枚举定义的基本语法是`public enum EnumName {constant1, constant2, ...}`。每个枚举常量都是`...

    2021年EFFECTIVEJAVA读书笔记.docx

    本文总结了Effective Java 中关于枚举与注解的知识点,涵盖了枚举类型的优点、使用指南、避免使用 int 常量、使用 EnumSet 和 EnumMap 等。 枚举类型的优点 枚举类型提供了编译时类型安全、自动命名空间隔离、可以...

    Java枚举类型enum的详解及使用

    EnumMap 和 EnumSet 是 Java 中的两个特殊的集合类,它们都是专门用于枚举类型的集合操作的。例如,我们可以使用 EnumMap 来保存枚举类型的映射关系: ```java EnumMap, String&gt; map = new EnumMap(Light.class); ...

    java集合 框架 泛型

    在集合框架中,枚举可用于创建固定大小的集合,如EnumSet和EnumMap。EnumSet是高效且类型安全的集合,适用于存储枚举类型;EnumMap则以枚举类型为键,提供快速访问和操作。 在PPT详解中,可能会详细讲述以下内容: ...

    使用java对一副扑克牌建模

    在使用枚举类型时,我们可以使用 EnumMap 和 EnumSet 两个类来操作枚举类型。例如,在上面的示例代码中,我们使用了 EnumMap 来存储一副扑克牌的花色和牌面大小。使用枚举类型可以使我们的代码更加简洁易懂,同时也...

    java枚举类型enum的使用

    除了基本的定义和使用之外,Java 还提供了专门用于枚举类型的容器类,如 `EnumMap` 和 `EnumSet`。 ##### 4.1 EnumMap 使用示例 `EnumMap` 是一个专为枚举类型设计的映射容器,其键必须是枚举类型。例如: ```...

    enum枚举类的一些代码demo

    Java提供了`EnumSet`和`EnumMap`两种专为枚举设计的集合类。`EnumSet`是一个高效的集合,用于存储枚举类型,而`EnumMap`则是一个键为枚举类型的高效映射表: ```java EnumSet&lt;WeekDay&gt; weekendDays = EnumSet.of...

    高级编程-java实验报告.docx

    实验报告主要涵盖了Java编程中的高级主题,特别是关于集合框架、映射和枚举类型的应用...同时,实验也涵盖了枚举类型的使用,以及EnumSet和EnumMap的基础应用。通过实际操作,学生能更好地理解和掌握这些高级编程概念。

    Java开发实战从入门到精通视频教程下载第14章 枚举.zip

    枚举还可以与其他数据结构结合使用,如`EnumMap`和`EnumSet`。`EnumMap`是一种映射,其键由枚举类型构成,而`EnumSet`则是一个高效、线程安全的集合,专门用来存储枚举类型。 此外,枚举在多线程环境下表现出良好的...

    Java期末复习——枚举与反射机制

    Java还提供了专门针对枚举的集合类:`EnumMap`和`EnumSet`。`EnumMap`是一个映射,其中的键是枚举类型,而`EnumSet`则是一个高效、不可变的集合,只包含枚举类型中的元素。 二、反射机制 反射机制允许在运行时检查...

    Java中的枚举类型Enum示例源代码

    枚举类型还可以与其他集合框架结合使用,例如`EnumSet`和`EnumMap`。`EnumSet`是专为枚举设计的高效集合,而`EnumMap`则是一个以枚举类型为键的映射表。 在枚举类型中,还可以定义抽象方法,所有枚举常量必须实现...

    简单总结java枚举类型

    枚举可以方便地与Java集合框架一起使用,例如放入`EnumSet`和`EnumMap`中。`EnumSet`比普通`Set`更高效,`EnumMap`比普通`Map`在枚举作为键时具有更好的性能。 11. 枚举的常量顺序: 枚举常量的顺序是它们在枚举...

    java工具类 java开发助手 java util

    11. EnumSet与EnumMap:针对枚举类型,Java提供了更高效的Set(EnumSet)和Map(EnumMap)实现,它们在内部优化了存储和操作,特别适合枚举类型的场景。 12. Iterator和Iterable接口:Iterator用于遍历集合元素,...

    一个扑克游戏,用于Java集合框架练习.zip

    5. **EnumSet和EnumMap**: 如果扑克牌的花色和数值用枚举类型定义,那么EnumSet和EnumMap会是理想的容器。它们针对枚举类型做了优化,提供了高效的性能和简洁的代码。 6. **Collections工具类**: 这个静态类提供了...

    java枚举ppt和详细代码

    枚举类可以继承`EnumSet`或`EnumMap`,这两个类提供了针对枚举的优化操作。例如: ```java EnumSet&lt;Color&gt; colors = EnumSet.allOf(Color.class); ``` 通过学习上述知识点,你可以更好地理解和运用Java枚举,...

    javaenum(枚举)使用详解+总结.pdf

    6. **EnumSet和EnumMap** - `EnumSet`:这是一种专门为枚举类型设计的高效集合,提供了类似Set的功能,不允许重复元素,按自然顺序排列。 - `EnumMap`:是基于枚举的键值对容器,它将枚举作为键,性能优秀,内存...

    java集合,java集合

    11. **EnumSet和EnumMap**:专为枚举类型设计的高效集合实现, EnumSet是Set的优化版本,EnumMap是Map的优化版本,它们在内部使用位运算和数组实现,性能优秀。 以上只是Java集合框架的一部分核心概念,实际开发中...

    集合类实惠有好用的,资源

    8. **EnumSet与EnumMap**:专为枚举类型设计的集合类,它们提供了高效的性能和内存使用。 9. **Map接口**:Map接口定义了键值对的存储,提供了get、put、remove等操作。它的实现类包括HashMap、TreeMap、...

    JAVA高级编程中Enum枚举

    最后,`EnumSet`和`EnumMap`是Java专门为枚举类型设计的高效容器。`EnumSet`是一种非常高效的集合,适用于存储枚举值;`EnumMap`则是一种以枚举为键的映射表,性能优于普通`HashMap`。 总之,深入理解并熟练运用...

Global site tag (gtag.js) - Google Analytics