1 EnumMap类的简介
- EnumMap是一个与枚举类一起使用的Map实现,EnumMap中所有key都必须是单个枚举类的枚举值。创建EnumMap时必须显式或隐式指定它对应的枚举类。
- EnumMap在内部以数组形式保存,所以这种实现形式非常紧凑、高效。
- EnumMap根据key的自然顺序(即枚举值在枚举类中的定义顺序)来维护来维护key-value对的次序。当程序通过keySet()、entrySet()、values()等方法来遍历EnumMap时即可看到这种顺序。
- EnumMap不允许使用null作为key值,但允许使用null作为value。如果试图使用null作为key将抛出NullPointerException异常。如果仅仅只是查询是否包含值为null的key、或者仅仅只是使用删除值为null的key,都不会抛出异常。
2 代码示例
import java.util.*; enum Season { SPRING,SUMMER,FALL,WINTER } public class EnumMapTest { public static void main(String[] args) { // 创建EnumMap对象,该EnumMap的所有key都是Season枚举类的枚举值 EnumMap enumMap = new EnumMap(Season.class); enumMap.put(Season.SUMMER , "小荷才露尖尖角"); enumMap.put(Season.SPRING , "满园春色关不住"); System.out.println(enumMap); } }
3 运行结果
{SPRING=满园春色关不住, SUMMER=小荷才露尖尖角}
4 代码分析
上面程序中创建了一个EnumMap类,创建该EnumMap对象时指定它的key只能是Season枚举类的枚举值。如果向该EnumMap中添加两个key-value对后,这两个key-value对将会以Season枚举值的自然顺序排序。
相关推荐
枚举类自动继承了`java.lang.Enum`类,因此可以拥有方法和字段,也可以实现接口。 枚举的优势在于它们的类型安全性。当枚举用于表示有限的、预定义的选项时,编译器会检查所有枚举常量的引用,确保只有预先声明的...
枚举类可以包含构造函数和方法,这些成员函数只能被枚举的常量在声明时调用。下面的例子中,我们为每个枚举常量赋予了对应的天数: ```java public enum WeekDay { MONDAY(1), TUESDAY(2), WEDNESDAY(3), ...
枚举通过`enum`关键字来创建,每个枚举类都隐式地继承自`java.lang.Enum`类。声明枚举类型的格式如下: ```java public enum 枚举类型名称{ 枚举对象1, 枚举对象2, ..., 枚举对象n; } ``` 枚举类型的数据可以通过...
以下是关于Java枚举类型的详细解释和相关知识点: 1. 定义枚举: 在Java中,枚举通过关键字`enum`来定义。例如,创建一个表示一周天的枚举类型如下: ```java enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, ...
枚举类可以继承`EnumSet`或`EnumMap`,这两个类提供了针对枚举的优化操作。例如: ```java EnumSet<Color> colors = EnumSet.allOf(Color.class); ``` 通过学习上述知识点,你可以更好地理解和运用Java枚举,...
本资源包提供了一些关于`Enum`枚举的深入学习材料,包括实例、常见问题以及相关的文档,非常适合Java开发者进行高级编程的学习和复习。 首先,枚举的基本语法是定义一个公共类,前面加上关键字`enum`。例如: ```...
本示例将深入探讨Java中常用的`Map`实现,包括`HashMap`和`EnumMap`。 首先,`Map`接口定义了一些基本操作,如`put`用于添加键值对,`get`用于获取与给定键关联的值,`remove`用于移除键值对,以及`size`用于返回...
枚举类有几个重要的特性: 1. 构造器默认为私有,这意味着你不能通过`new Animals()`的方式来实例化枚举。 2. 枚举值是预定义的,不能在运行时动态添加新的枚举实例。 3. 枚举可以包含方法,就像普通类一样。在示例...
简单查询算法,供学习参考。 代码中描述了Enum和EnumMap类的使用。
在C++编程中,标准模板库(Standard Template Library, STL)提供了一种高效且方便的关联容器——map。本文将详细讲解map的特性和使用方法,帮助开发者更好地理解和运用这一强大的工具。 1. **map简介** map是一种...
为了解决这些问题,Java提供了一个特定的Map实现——`java.util.EnumMap`,它专为枚举设计,提供更高的类型安全性和性能。 首先,让我们深入理解枚举和`ordinal()`方法。枚举类型定义了一系列相关的常量,例如`Herb...
在Java中,枚举类型不是简单的常量数组,而是一种完整的类,具有类的所有特性,如方法、构造函数和继承。下面将详细探讨`Enum`的基本概念、用法以及一些高级特性。 首先,枚举类型`Enum`的定义方式如下: ```java ...
Map 对象是模板类,需要关键字和存储对象两个模板参数:`std::map, string> personnel;`这样就定义了一个用 int 作为索引,并拥有相关联的指向 string 的指针。 在 Map 中插入元素 改变 Map 中的条目非常简单,...
enum-map一个提供枚举图的库,该枚举图提供类型安全的枚举数组。 它是使用常规Rust数组实现的,因此使用它们的速度与使用r enum-map一样快。提供枚举图的库提供类型安全的枚举数组。 它是使用常规Rust数组实现的,...
EnumMap 和 EnumSet 是 Java 中的两个特殊的集合类,它们都是专门用于枚举类型的集合操作的。例如,我们可以使用 EnumMap 来保存枚举类型的映射关系: ```java EnumMap, String> map = new EnumMap(Light.class); ...
在Java编程中,当我们需要处理特定枚举类型(Enum)作为键(Key)的映射关系时,EnumMap和EnumSet成为两种非常实用的工具类。它们是Java集合框架中专门为枚举类型设计的高效容器,提供了比普通HashMap和HashSet更好...
Java枚举是编程语言Java中的一个特色特性,它在类、接口和变量的定义中扮演着特殊的角色。枚举在Java中被用作一种数据类型,用于定义一组固定的常量,这些常量可以代表特定的值或状态。通过枚举,我们可以确保变量...
本文主要探讨了几个常见的 Map 实现类的区别,包括 ConcurrentHashMap、EnumMap 和 HashMap。 1. **ConcurrentHashMap**: 这是一个线程安全的 Map 实现,特别适合在多线程环境中使用。它采用了分段锁的设计,使得在...
总之,Java的枚举类型提供了丰富的特性,包括嵌套枚举、接口实现、自定义方法和枚举映射等。通过这些技巧,开发者可以更好地组织枚举常量,增加代码的可读性和可维护性,同时实现更加灵活的功能。在实际开发中,我们...
- `getDeclaringClass()`:返回枚举常量所属的枚举类。 - `name()`:返回枚举常量的名称。 - `ordinal()`:返回枚举常量的序数。 - `toString()`:返回枚举常量的名称。 5. **自定义属性和方法** 你可以在枚举...