高效处理枚举键值对:EnumMap

在Java集合框架中,HashMap通过对key计算hashCode()来直接定位value在内部数组的索引,实现了"空间换时间"的高效查找。但当key的类型为枚举(enum)时,还有一种更优的选择——EnumMap

EnumMap的优势

EnumMap是专门为枚举类型key设计的映射实现,它的优势体现在两个方面:

  • 效率高:无需计算hashCode(),而是直接根据枚举的自然顺序定位到内部数组的索引,查找速度比HashMap更快
  • 空间紧凑:内部采用与枚举类型匹配的紧凑数组存储value,不会像HashMap那样因哈希冲突等问题造成额外空间浪费

EnumMap的示例

以Java内置的DayOfWeek枚举为例,我们可以用EnumMap轻松实现星期几的中英文映射功能:

import java.time.DayOfWeek;
import java.util.*; public class EnumMapDemo {
public static void main(String[] args) {
// 初始化EnumMap,指定枚举类型
Map<DayOfWeek, String> weekMap = new EnumMap<>(DayOfWeek.class); // 存入键值对
weekMap.put(DayOfWeek.MONDAY, "星期一");
weekMap.put(DayOfWeek.TUESDAY, "星期二");
weekMap.put(DayOfWeek.WEDNESDAY, "星期三");
weekMap.put(DayOfWeek.THURSDAY, "星期四");
weekMap.put(DayOfWeek.FRIDAY, "星期五");
weekMap.put(DayOfWeek.SATURDAY, "星期六");
weekMap.put(DayOfWeek.SUNDAY, "星期日"); // 操作与普通Map一致
System.out.println("完整映射表:" + weekMap);
System.out.println("星期一对应的枚举:" + weekMap.get(DayOfWeek.MONDAY));
}
}

总结

  • 理解EnumMap的优势和适用场景

Java集合——6.使用EnumMap的更多相关文章

  1. Java集合框架:EnumMap

    EnumMap定义 package java.util; import java.util.Map.Entry; import sun.misc.SharedSecrets; public class ...

  2. Java集合概述

    容器,是用来装东西的,在Java里,东西就是对象,而装对象并不是把真正的对象放进去,而是指保存对象的引用.要注意对象的引用和对象的关系,下面的例子说明了对象和对象引用的关系. String str = ...

  3. Java集合容器简介

    Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...

  4. Java集合框架总结

    java集合框架主要分为实现了Collection接口的List和Set.映射接口Map. |-- List 有序,元素都有索引,可重复. |-- Set 无序,不可以存储重复的元素. |-- Map ...

  5. Java基础19:Java集合框架梳理

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  6. java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类

    本文关键词: java集合框架  框架设计理念  容器 继承层级结构 继承图 集合框架中的抽象类  主要的实现类 实现类特性   集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...

  7. Java集合(Collection)综述

    1.集合简介 数学定义:一般地,我们把研究对象统称为元素.把一些元素组成的总体叫做集合. java集合定义:集合就是一个放数据的容器,准确的说是放数据对象引用的容器. java中通用集合类存放于jav ...

  8. Java集合--概述

    目录 Java集合--概述 摘要 图示 正文 Java集合--概述 摘要 ​ 本文主要介绍集合的整体概念,并作为接下来Java集合实现类讲解的索引. 图示 ​ 这是在网上看到了这样一张图,感觉很清晰, ...

  9. Java 性能调优指南之 Java 集合概览

    [编者按]本文作者为拥有十年金融软件开发经验的 Mikhail Vorontsov,文章主要概览了所有标准 Java 集合类型.文章系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文: 本 ...

  10. Java 集合框架(常用数据结构)

    早在Java 2中之前,Java就提供了特设类.比如:向量(Vector).栈(Stack).字典(Dictionary).哈希表(Hashtable)这些类(数据结构)用来存储和操作对象组.虽然这些 ...

随机推荐

  1. MySQL 添加和删除索引

    摘要:介绍添加.删除和显示索引的方法.   今天为大家演示MySQL数据库索引的常见操作,包括创建.删除和查询等.下面首先介绍为什么需要添加索引. 索引的作用   索引用于快速找出在某一列中有一特定值 ...

  2. 聊聊@Autowired注解的Field injection is not recommended提示问题

    1. 前言 在我接触过的大部分Java项目中,经常看到使用@Autowired注解进行字段注入: import org.springframework.beans.factory.annotation ...

  3. Permutation Counting

    \(n\) 的范围很小,考虑动态规划. \(f_{i,j}\) 在前 \(i\) 个数有 \(j\) 个 \(<\) 的个数. 若 \(\texttt {a<b<c<d}\), ...

  4. Springboot笔记<12>数据访问

    springboot数据访问 springboot整合JDBC JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用.JdbcTemplate是Spring的一部分.J ...

  5. 附录:LInux编辑器

    附录2:编辑器 1.vim 参考:菜鸟教程 1.1.安装 sudo apt install -y vim 1.2.常用指令 基本上 vi/vim 共分为三种模式,命令模式(Command Mode). ...

  6. 你必须知道的容器日志 (2) 开源日志管理方案 ELK/EFK

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章.上一篇<你必须知道的容器日志(1)>中介绍了Docker自带的log ...

  7. asp.net mvc 获取请求服务器信息

    HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] /// <summary>        /// ...

  8. Oracle数据一致性与事务管理

    数据一致性和事务 Oracle中的数据一致性 当从A表取一条数据添加到B表时,需先删除A表数据,再新增B表数据, 如果第二条操作出异常时,就造成了数据不一致. Oracle中的事务 事务是保证数据一致 ...

  9. java---HashSet、TreeSet、泛型

    Vector 集合 的体系: –| Collection 单例集合的根接口 -–| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复. ---| ArrayList ArrayL ...

  10. C++11 功能函数小结

    简介 C++11 引进了很多集合函数, 在功能更加强大的同时, 也越发复杂. 参考链接 https://blog.csdn.net/qq_40160605/article/details/801502 ...