为了可以更好的支持枚举类型,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基础知识和常见问题,可以为你分享解答呢。
推荐阅读: