📜  Java中的 EnumMap 类(1)

📅  最后修改于: 2023-12-03 15:01:53.166000             🧑  作者: Mango

Java中的 EnumMap 类

什么是 EnumMap?

EnumMap 是 Java 中的一个特殊映射,它使用枚举类型作为键,并且值必须是单一类型。它是高效的,快速的且类型安全的。

EnumMap 通过一个数组实现,其中数组的大小是枚举键类型的大小。它提供了和 HashMap 类似的功能,但由于键被限制为枚举类型,所以它通常比 HashMap 更快更有效。

EnumMap 的优点
  • 高效快速:其性能接近于数组,远高于其它 Map 结构;
  • 类型安全:键必须为枚举类型,不必担心使用时碰到非法的 key;
  • 迭代输出有序:按照枚举值的枚举顺序(声明的顺序)迭代输出;
  • 内存占用较小:由于基于一个开辟好的数组实现,空间占用比较小。
EnumMap 的缺点
  • 无法使用非枚举类型作为键;
  • 不支持 null 值作为 value ,因为需要使用存储的值所对应的枚举对象作为下标去定位。
示例代码
public class EnumMapExample {

    public static void main(String[] args) {

        // 创建一个 EnumMap,键的类型为 Animal
        EnumMap<Animal, String> animalMap = new EnumMap<>(Animal.class);

        // 添加键值对
        animalMap.put(Animal.CAT, "Cat");
        animalMap.put(Animal.DOG, "Dog");
        animalMap.put(Animal.HORSE, "Horse");

        // 输出所有键的名称
        for (Animal animal : animalMap.keySet()) {
            System.out.println(animal.name());
        }

        // 输出所有键的值
        for (String value : animalMap.values()) {
            System.out.println(value);
        }

        // 返回指定键所映射的值
        System.out.println(animalMap.get(Animal.CAT));

        // 判断是否包含指定键
        System.out.println(animalMap.containsKey(Animal.CAT));

        // 判断是否包含指定值
        System.out.println(animalMap.containsValue("Cat"));
    }
}

enum Animal {
    CAT, DOG, HORSE
}

代码运行结果:

CAT
DOG
HORSE
Cat
Dog
Horse
Cat
true
true