首页 > 编程语言 >26 | JAVA集合EnumMap(Map的针对枚举类的一种特殊实现,接口仍为Map)

26 | JAVA集合EnumMap(Map的针对枚举类的一种特殊实现,接口仍为Map)

时间:2022-09-02 08:44:06浏览次数:99  
标签:DayOfWeek Map 26 JAVA map enum EnumMap put

EnumMap

如果作为key的对象是enum类型,那么,还可以使用Java集合库提供的一种EnumMap,它在内部以一个非常紧凑的数组存储value,并且根据enum类型的key直接定位到内部数组的索引,并不需要计算hashCode(),不但效率最高,而且没有额外的空间浪费。

DayOfWeek这个枚举类型为例.

import java.time.DayOfWeek;
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Map<DayOfWeek, String> map = new EnumMap<>(DayOfWeek.class);
        map.put(DayOfWeek.MONDAY, "星期一");
        map.put(DayOfWeek.TUESDAY, "星期二");
        map.put(DayOfWeek.WEDNESDAY, "星期三");
        map.put(DayOfWeek.THURSDAY, "星期四");
        map.put(DayOfWeek.FRIDAY, "星期五");
        map.put(DayOfWeek.SATURDAY, "星期六");
        map.put(DayOfWeek.SUNDAY, "星期日");
        System.out.println(map);
        System.out.println(map.get(DayOfWeek.MONDAY));
    }
}

如果Map的key是enum类型,推荐使用EnumMap,既保证速度,也不浪费空间。

使用EnumMap的时候,根据面向抽象编程的原则,应持有Map接口。

标签:DayOfWeek,Map,26,JAVA,map,enum,EnumMap,put
From: https://www.cnblogs.com/mmxingye/p/16648534.html

相关文章

  • 17 | JAVA反射之调用方法
    反射调用方法获得Method对象我们已经能通过Class实例获取所有Field对象,同样的,可以通过Class实例获取所有Method信息。Class类提供了以下几个方法来获取Method:Method......
  • Java开发学习(二十九)----Maven依赖传递、可选依赖、排除依赖解析
    现在的项目一般是拆分成一个个独立的模块,当在其他项目中想要使用独立出来的这些模块,只需要在其pom.xml使用<dependency>标签来进行jar包的引入即可。<dependency>其实就是......
  • 19 | JAVA反射之获取继承关系
    反射获取继承关系获取父类的Class有了Class实例,我们还可以获取它的父类的Class://reflectionpublicclassMain{publicstaticvoidmain(String[]args)thro......
  • 18 | JAVA反射之调用构造方法
    反射调用构造方法调用Class.newInstance()的局限是,它只能调用该类的public无参数构造方法。如果构造方法带有参数,或者不是public,就无法直接通过Class.newInstance()来调......
  • 01 | JAVA入门基础
    基本数据类型基本数据类型是CPU可以直接进行运算的类型。Java定义了以下几种基本数据类型:整数类型:byte,short,int,long浮点数类型:float,double字符类型:char布尔类型:bool......
  • 02 | JAVA内部类
    java内部类Java的内部类分为好几种,通常情况用得不多,但也需要了解它们是如何使用的。1.InnerClass如果一个类定义在另一个类的内部,这个类就是InnerClass:它与普通类有......
  • 04 | JAVA模块
    模块jar只是用于存放class的容器,它并不关心class之间的依赖。从Java9开始引入的模块,主要是为了解决“依赖”这个问题。如果a.jar必须依赖另一个b.jar才能运行,那我们应该......
  • 05 | JAVA字符串
    字符串Strings1="Hello!";实际上字符串在String内部是通过一个char[]数组表示的,因此,按下面的写法也是可以的:Strings2=newString(newchar[]{'H','e','l','l......
  • 06 | JAVA的StringBuilder高效拼接字符串
    StringBuilder如果用+来拼接字符串速度满。我们可以提前用StringBuilder来申请一大块的内存。把他想象成一个容器。为了能高效拼接字符串,Java标准库提供了StringBuil......
  • 07 | JAVA的StringJoiner对象专门拼接字符串
    StringJoiner对象专门用来拼接字符串importjava.util.StringJoiner;publicclassMain{publicstaticvoidmain(String[]args){String[]names={......