Java集合——6.使用EnumMap
高效处理枚举键值对: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的更多相关文章
- Java集合框架:EnumMap
EnumMap定义 package java.util; import java.util.Map.Entry; import sun.misc.SharedSecrets; public class ...
- Java集合概述
容器,是用来装东西的,在Java里,东西就是对象,而装对象并不是把真正的对象放进去,而是指保存对象的引用.要注意对象的引用和对象的关系,下面的例子说明了对象和对象引用的关系. String str = ...
- Java集合容器简介
Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...
- Java集合框架总结
java集合框架主要分为实现了Collection接口的List和Set.映射接口Map. |-- List 有序,元素都有索引,可重复. |-- Set 无序,不可以存储重复的元素. |-- Map ...
- Java基础19:Java集合框架梳理
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类
本文关键词: java集合框架 框架设计理念 容器 继承层级结构 继承图 集合框架中的抽象类 主要的实现类 实现类特性 集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...
- Java集合(Collection)综述
1.集合简介 数学定义:一般地,我们把研究对象统称为元素.把一些元素组成的总体叫做集合. java集合定义:集合就是一个放数据的容器,准确的说是放数据对象引用的容器. java中通用集合类存放于jav ...
- Java集合--概述
目录 Java集合--概述 摘要 图示 正文 Java集合--概述 摘要 本文主要介绍集合的整体概念,并作为接下来Java集合实现类讲解的索引. 图示 这是在网上看到了这样一张图,感觉很清晰, ...
- Java 性能调优指南之 Java 集合概览
[编者按]本文作者为拥有十年金融软件开发经验的 Mikhail Vorontsov,文章主要概览了所有标准 Java 集合类型.文章系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文: 本 ...
- Java 集合框架(常用数据结构)
早在Java 2中之前,Java就提供了特设类.比如:向量(Vector).栈(Stack).字典(Dictionary).哈希表(Hashtable)这些类(数据结构)用来存储和操作对象组.虽然这些 ...
随机推荐
- MySQL 添加和删除索引
摘要:介绍添加.删除和显示索引的方法. 今天为大家演示MySQL数据库索引的常见操作,包括创建.删除和查询等.下面首先介绍为什么需要添加索引. 索引的作用 索引用于快速找出在某一列中有一特定值 ...
- 聊聊@Autowired注解的Field injection is not recommended提示问题
1. 前言 在我接触过的大部分Java项目中,经常看到使用@Autowired注解进行字段注入: import org.springframework.beans.factory.annotation ...
- Permutation Counting
\(n\) 的范围很小,考虑动态规划. \(f_{i,j}\) 在前 \(i\) 个数有 \(j\) 个 \(<\) 的个数. 若 \(\texttt {a<b<c<d}\), ...
- Springboot笔记<12>数据访问
springboot数据访问 springboot整合JDBC JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用.JdbcTemplate是Spring的一部分.J ...
- 附录:LInux编辑器
附录2:编辑器 1.vim 参考:菜鸟教程 1.1.安装 sudo apt install -y vim 1.2.常用指令 基本上 vi/vim 共分为三种模式,命令模式(Command Mode). ...
- 你必须知道的容器日志 (2) 开源日志管理方案 ELK/EFK
本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章.上一篇<你必须知道的容器日志(1)>中介绍了Docker自带的log ...
- asp.net mvc 获取请求服务器信息
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] /// <summary> /// ...
- Oracle数据一致性与事务管理
数据一致性和事务 Oracle中的数据一致性 当从A表取一条数据添加到B表时,需先删除A表数据,再新增B表数据, 如果第二条操作出异常时,就造成了数据不一致. Oracle中的事务 事务是保证数据一致 ...
- java---HashSet、TreeSet、泛型
Vector 集合 的体系: –| Collection 单例集合的根接口 -–| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复. ---| ArrayList ArrayL ...
- C++11 功能函数小结
简介 C++11 引进了很多集合函数, 在功能更加强大的同时, 也越发复杂. 参考链接 https://blog.csdn.net/qq_40160605/article/details/801502 ...