EnumMap 是 Java 中的一个特殊实现类,它是基于枚举类型的键的有序映射。它实现了 Map 接口,并且只能使用枚举类型作为键。
EnumMap 内部使用数组来存储数据,数组的大小与枚举类型的元素数量相同。这样做的好处是可以通过索引直接访问数组中的元素,使得 EnumMap 的操作非常高效。
由于 EnumMap 的键必须是枚举类型,所以在创建 EnumMap 时,需要指定一个枚举类型的 Class 对象作为参数。例如:
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
EnumMap<Day, String> enumMap = new EnumMap<>(Day.class);
上面的代码创建了一个以Day
枚举类型为键、String 类型为值的 EnumMap 对象。
EnumMap 提供了一些特殊的方法,用于处理枚举类型的键。例如,可以使用 keySet() 方法获取 EnumMap 中所有键的集合,该集合按照枚举类型的顺序进行排序。下面是一个简单的示例代码,演示如何使用 EnumMap:
import java.util.EnumMap;
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class EnumMapExample {
public static void main(String[] args) {
EnumMap<Day, String> enumMap = new EnumMap<>(Day.class);
enumMap.put(Day.MONDAY, "星期一");
enumMap.put(Day.TUESDAY, "星期二");
enumMap.put(Day.WEDNESDAY, "星期三");
System.out.println(enumMap.get(Day.MONDAY)); // 输出:星期一
System.out.println(enumMap.keySet()); // 输出:[MONDAY, TUESDAY, WEDNESDAY]
}
}
以上示例代码创建了一个以 Day 枚举类型为键、String 类型为值的 EnumMap 对象,并向其中添加了几个键值对。然后通过 get() 方法获取指定键的值,并使用 keySet() 方法获取所有键的集合。