Java EnumMap values()方法具有什么功能呢?

打印 上一主题 下一主题

主题 575|帖子 575|积分 1725

转自:
http://www.java265.com/JavaCourse/202204/2755.html
EnumMap简介:
EnumMap是保存枚举类型的Map
map的key是枚举类型
这点在类定义的时候就已经声明好了EnumMap
如何不是枚举类型编译会出错。
例:定义了一个Enum类 JdbcType。
public enum JdbcType {
INT,NUMBER,VARCHAR,VARCHAR2,LONG,BLOB,CHAR;
}
EnumMap优点说明:
        1 相比HashMap,EnumMap的性能和速度要快的多
           EnumMap里面的数据结构是数组,获取的数据的时候特别快
              而且添加的数据的时候(一般用put(K,V)),这里面的并不像一般数组一样,当插入到中间的位置时候,要数组整体移动(一般实现依次向后移动)。EnumMap实现不需要,因为            数组在EnumMap实例化的时候就已经初始化好了,要做的就是对原来的oldValue进行覆盖,这样无论获取数据还是添加和删除数据都要快的多。这里特别提示一下,为什么                  EnumMap能够用数组这得益于EnumMap的key是枚举类型,枚举类类型中每一种类型,在声明的时候都有确定的位置,可以通过对应的位置确定的枚举类型。通过该方法获得位置key.ordinal();
         2.枚举类型的相应的类型更加明确
            key对应的范围更加明确
             如的key是string
           那么你的键范围无法确定。所以能够用EnumMap,尽量用EnumMap这也是一种代码优化方案’
EnumMap的大量用到各种框架中
   在Mabatis的TypeHandlerRegistry中就用到了EnumMap:
public final class TypeHandlerRegistry {
private final Map>(JdbcType.class); 
 
下文笔者讲述EnumMap values()方法的功能简介说明,如下所示:
  1. <strong>EnumMap values()方法的功能:
  2.        返回一个Collection 此集合中存储EnumMap中的值
  3. EnumMap values()方法的语法:
  4.        public Collection values();</strong>
  5. <strong>注意事项
  6.     1.values()方法在java.util包中可用
  7.     2.values()方法用于获取此枚举映射的Collection视图中的所有值
  8.     3.values()方法是一种非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息
  9.      在Collection中收集值时,values()方法不会引发异常
  10. </strong>
复制代码
例:
  1. package com.java265.other;
  2. import java.util.Collection;
  3. import java.util.EnumMap;
  4. public class Test15 {
  5.         /**
  6.          * java265.com 示例 EnumSet values方法示例分享
  7.          */
  8.         public enum Sex {
  9.                 MALE, FEMALE
  10.         };
  11.         public static void main(String[] args) {
  12.                 EnumMap<Sex, String> em = new EnumMap<Sex, String>(Sex.class);
  13.                 // 通过使用put()方法是
  14.                 // dd在EnumMap中的链接值
  15.                 em.put(Sex.MALE, "小明");
  16.                 em.put(Sex.FEMALE, "小敏");
  17.                 Collection<String> co = em.values();
  18.                 System.out.println(co);
  19.         }
  20. }
  21. ---------运行以上代码,将输出以下信息------
  22. [小明, 小敏]
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表