java枚举(enum)详解,EnumMap类

KLQ 2020-08-31 10:07:34 java常见问答 10230

为了可以更好的支持枚举类型,java.util当中添加了2个新类,一个是EnumMap另外一个就是EnumSet,使用他们的话能够更加高效的操作枚举类型,那么下面的我们就来先讲一下EnumMap。

EnumMap类

EnumMap是专门为枚举类型量身定做的Map实现。

虽然说,使用其他的Map(例HashMap)实现也可以完成枚举类型实例到值的映射,可是使用EnumMap会更加的高效。

HashMap只可以接收同一枚举类型的实例作为键值,并且因为枚举类型实例的数量相对固定并且有限,所以的话EnumMap使用数组来存放与枚举类型对应的值,使得EnumMap的效率非常高。

示例:

下面是使用EnumMap的一个代码示例。

枚举类型DataBaseType里存放了现在支持的所有数据库类型。

针对不同的数据库,一些数据库相关的方法需要返回不一样的值,例如示例当中getURL()方法。

// 定义数据库类型枚举
public enum DataBaseType
{
    MYSQUORACLE
    , 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://sql:1433;Database=mydb");
}
//根据不同的数据库类型,返回对应的URL
// @param type DataBaseType 枚举类新实例
// @return
public String getURL(DataBaseType type)
{
    return this.urls.get(type);
}

在实际的应用当中,EnumMap对象urls通常是由外部负责整个应用初始化的代码来填充的。

这里为了演示方便,类自己做了内容填充。

从这个例子当中能够看得出来,使用EnumMap能够很方便地为枚举类型在不同的环境中绑定到不同的值上。

在这个例子当中getURL绑定到URL上,在其他的代码当中可能又被绑定到数据库驱动上去。

关于EnumMap类就给你介绍到这里了,假如你还想了解更多相关知识,可以继续关注奇Q工具网来了解哦,更多java基础知识和常见问题,可以为你分享解答呢。

推荐阅读:

java枚举(enum)详解,EnumSet类

java枚举(enum)详解,为枚举添加方法

java枚举(enum)详解,枚举类