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

为了可以更好的支持枚举类型,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 urls = new EnumMap (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上,在其他的代码当中可能又被绑定到数据库驱动上去。

为了可以更好的支持枚举类型,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 urls = new EnumMap (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上,在其他的代码当中可能又被绑定到数据库驱动上去。
经验分享 程序员 微信小程序 职场和发展