`
mowengaobo
  • 浏览: 165164 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

说说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);

}

分享到:
评论

相关推荐

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

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

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

    `EnumMap`是一个映射,其中的键是枚举类型,而`EnumSet`则是一个高效、不可变的集合,只包含枚举类型中的元素。 二、反射机制 反射机制允许在运行时检查类的信息,包括类的结构、字段、方法等,并动态创建和访问...

    一文弄懂EnumMap和EnumSet

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

    java枚举ppt和详细代码

    Java枚举是面向对象编程中的一个重要特性,它用于定义固定的常量集合,这些常量通常代表某种特定的数据类型。在Java中,枚举提供了一种更安全、更规范的方式来处理常量,相比于传统的final static变量,枚举具有更多...

    简单总结java枚举类型

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

    JAVA高级编程中Enum枚举

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

    java枚举的一个实例

    枚举在集合框架中也有广泛应用,如`java.util.EnumSet`和`java.util.EnumMap`,它们提供了针对枚举类型优化的高效集合实现。 总的来说,Java枚举提供了一种强类型、安全且易于使用的机制来表示固定集合的值。通过...

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

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

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

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

    java 枚举学习心得

    同时,枚举还支持枚举常量之间的自然排序,可以与其他集合框架结合使用,如`EnumSet`和`EnumMap`。 总的来说,学习Java枚举不仅能够帮助我们编写更清晰、更安全的代码,还能提高程序设计的效率。通过深入理解枚举的...

    java枚举类型enum的使用

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

    2021年EFFECTIVEJAVA读书笔记.docx

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

    java Enum EnumMap 简单例子

    简单查询算法,供学习参考。 代码中描述了Enum和EnumMap类的使用。

    Java 常用武器库之枚举1

    - `EnumSet`和`EnumMap`是专门为枚举设计的高效集合类,它们提供了针对枚举类型优化的操作。 枚举在Java中的应用广泛,尤其是在设计模式中,如工厂模式、策略模式等。使用枚举可以增强代码的可读性和可维护性,...

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

    Java中的枚举(enum)是自JDK 1.5版本引入的一种强大的类型,它用于定义一组相关的常量。枚举在Java中被设计为一种特殊的类,它们默认继承自`java.lang.Enum`抽象类,并且是单继承的,这意味着它们无法再继承其他类...

    java集合-EnumMap的使用

    EnumMap是Java中的一种特殊映射实现,它要求键必须来自枚举类型,并且对于每个可能的键值,都有预定义的条目。

    Java中EnumMap代替序数索引代码详解

    为了解决这些问题,Java提供了一个特定的Map实现——`java.util.EnumMap`,它专为枚举设计,提供更高的类型安全性和性能。 首先,让我们深入理解枚举和`ordinal()`方法。枚举类型定义了一系列相关的常量,例如`Herb...

    java集合 框架 泛型

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

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

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

    enum枚举类的一些代码demo

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

Global site tag (gtag.js) - Google Analytics