EnumMap 两种使用方式的比较

第一种:直接使用

        EnumMap em = new EnumMap(C.class);  
        em.put(C.UK,"春暧花开");
        em.put(C.US, 233);
        System.out.println(em); 

 此种EnumMap允许插入各种类型的值。由于java自动包装机制,甚至可以插入整数等基本类型。

同时eclipse提示:Type safety: The method put(Enum, Object) belongs to the raw type EnumMap. References to generic type EnumMap<K,V> should be parameterized

第二种:继承 EnumMap 类

1 import java.util.EnumMap;
2 
3 public class Phons extends EnumMap<C, Phon> {
4     public Phons() {
5         super(C.class);
6     }
7 }

如果向其中插入无关类型。编译报错:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
 The method put(C, Phon) in the type EnumMap<C,Phon> is not applicable for the arguments (C, int)

此种方法避免了类型安全的问题。

转载于:https://www.cnblogs.com/qgbcs/p/3957944.html

Java笔记之使用EnumMap和TreeMap 使用Enum Map 因为HashMap是一种通过对key计算hashCode(),通过空间换时间的方式,直接定位到value所在的内部数组的索引,因此,查找效率非常高。 如果作为key的对象是枚举类型,那么,还可以使用Java集合库提供的一种EnumMap,它在内部以一个非常紧凑的数组存储value,并且根据枚举类型的key直接定位到内部数组的索引,并不需要计算hashCode(),不但效率最高... 阅读详情

相关推荐

Java必修课】HashMap性能很好?问过我EnumMap

1 简介 我们知道Map只是一个接口,它有多种实现,Java中最常用的是HashMap了。而本文想讲述的是另一个实现:EnumMap。它是枚举类型的Map,要求它的Key值都必须是枚举型的。 2 创建你的EnumMap 既然是关于枚举类型的Map,我们先创建一个枚举,以便后续使用: public enum Directions { NORTH, SOUTH, EAST, WEST } ...

南瓜慢说 1640

Dart2基础(八) - 类和枚举

目录 类的定义和使用 获取对象类型 实例变量 构造函数 子类构造函数 重定向构造函数 静态构造函数 工厂构造函数 实例方法 抽象类和方法 隐式接口 类的继承 重载运算符 枚举 mixins 类变量和方法 Dart2中的类都是继承于类Object。Dart2中每一个类都有有一个超类(Object除外),但是一个类的主体可以在多个类层次中使用。 类的定义和使用 ...

山海的博客 1万+

枚举高性能之EnumMap

title: 枚举高性能之EnumMap tags: JCF Enum EnumMap 枚举 categories: jcf date: 2017-10-31 21:45:14 背景 想必使用Java5之后枚举已经是每一个Java开发者很常用的工具了。特别是用来实现单例模式通过枚举也是一种推荐的方式。 大部分开发者也有根据枚举回去Map的需求。那么Jdk也提供了EnumMap这种便捷的工具...

weixin_34198762的博客 835

If..else, Map, Enum查询速度对比

习惯每天逛一下论坛,今天发现一个关于重构的帖子 http://www.iteye.com/topic/940121     于是特地自己做了一个测试,排除异常的情况,测试代码如下   package ben.test.performance.ifelse; import java.util.HashMap; import java.util.Map; ...

Ben.Sin 1356

java枚举类型enum的使用

java枚举类型enum的使用  java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum 定义,所以也都没有注意过,面对突入起来的问题,还真有点不太清楚为什么有这样的定义。既然不明白就抽时间研究

Make progress step by step everyday..... 526

【数据结构】⭐️基于枚举类型容器的使用-EnumMap

本地测试 EnumMap 数据结构的使用和特性

产品经理克星(狗头) 936

Enum枚举详解和EnumSet、EnumMap使用

一、Enum枚举 public enum Day { MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY; } 一个简单的测试类: public class TestEnum { public static void main(String[] args) { Day today=Day....

SeanMiao 1万+

java enummap 与 map_Java中的EnumMap和HashMap之间的区别

EnumMap是在JDK5中引入的。它旨在使用Enum作为Map中的键。它也是Map接口的实现。EnumMap中的所有键都应具有相同的枚举类型。在EnumMap中,键不能为null,任何键都将引发NullPointerException。根据java文档-EnumMap在内部用作数组,此表示非常紧凑且高效。HashMap也是Map接口的实现。它用于以“键和值”形式存储数据。它可以包含一个null键...

weixin_39877182的博客 847

为什么在EffectiveJava中建议用EnumSet替代位字段,以及使用EnumMap替换序数索引

在中的第 36条中建议 用 EnumSet 替代位字段,在第37条中建议 用EnumMap替换序数索引,为什么?

SevenCoding的博客 1207

第37条中建议 用EnumMap替换序数索引,为什么?

在中的第 36条中建议 用 EnumSet 替代位字段,在第37条中建议 用EnumMap替换序数索引,为什么?

chengxuyuanlaow的博客 1174

Java EnumMap工作原理及实现(一)

目录(?)[+] EnumMap定义EnumMap使用EnumMap用途总结 EnumMap定义 package java.util; import java.util.Map.Entry; import sun.misc.SharedSecrets; public class EnumMap, V> extends AbstractMap implements

pfnie的博客 2161

Java集合之WeakHashMap、IdentityHashMap、EnumMap介绍

转自:点击打开链接WeakHashMapWeakHashMap与HashMap的用法基本类似。区别:HashMap的key保留了对实际对象的强引用,这意味着只要HashMap对象不被销毁,还HashMap的所有key所引用的对象就不会被垃圾回收,HashMap也不会自动删除这些key所对应的key-value对;WeakHashMap的key只保留对实际对象的弱引用,这意味着如果WeakHashM...

苝花向暖丨楠枝向寒 442

enum,EnumMap,EnumSet

enum基本使用: package com.enumTest;enum Shrubbery { GROUND, CRAWLING, HANGING}public class EnumClass { public static void main(String[] args) { for (Shrubbery s : Shrubbery.values()) {

张硕的博客 1067

Map排序的两种方式

Map排序的两种方式: [code="java"][/code] public static EnumMap mapSort(EnumMap temp){ Set set = temp.entrySet(); Map.Entry[] entries = (Entry[]) set.toArray(); Arrays.sort(entries, new Comparator...

Hello,world! 323

容器--EnumMap

一、概述 EnumMap是一类特殊的Map, 其特殊之处在于KEY需要是枚举类型,由于枚举类型的特点是值的个数是固定的,所以,对于EnumMap来说,其所能存储的个数也就是固定的了。这种类型的Map相对来说是比较简单的。 二、主要实现介绍   1. 初始化   由于EnumMap的enum特点,决定了其容器的容量是不变的,所以,在创建一个EnumMap的时候,我们...

weixin_30580341的博客 81

枚举(EnumSet and EnumMap等)

enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继承java.lang.Enum类,更多内容可以自行查看其官方文档。枚举在很多时候会和常量拿来对比,可能因为本身我们大量实际使用枚举的地方就是为了替代常量。那么这种方式由什么优势呢?以这种方式定义的常量使代码更具可读性,允许进行编译时检查,预先记录可接受值的列表,并避免由于传入无效值而引起的意外行为。下面示例定义一个简单的枚举类型 pizza 订单的状态,共有三种 ORDERED, READY, DELIVERED状态: 简单来说,我们通过上

帆的博客 509
上一篇: 【记录】ASP.NET MVC RegisterBundles
下一篇: 【转载】Oracle ASM
weixin_34023982
博客等级 码龄11年 5264粉丝 850原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值