Java中的EnumMap类

Java中的EnumMap类

EnumMap类是Java集合框架中的一种特殊映射类型。它是针对枚举类型设计的,因此只能接受枚举类型作为键。与HashMap等普通映射类型不同的是,EnumMap在内部是用数组实现的,因此它具有很高的性能和效率。

1. 实例化一个EnumMap

实例化一个EnumMap非常简单,只需要将具体的枚举类作为参数即可。以下示例使用了一个简单的枚举类Season,它包含了4个枚举项SPRING、SUMMER、AUTUMN和WINTER。

import java.util.EnumMap;

public class EnumMapExample {
    enum Season {
        SPRING, SUMMER, AUTUMN, WINTER
    }

    public static void main(String[] args) {
        EnumMap<Season, String> enumMap = new EnumMap<Season, String>(Season.class);
        enumMap.put(Season.SPRING, "spring");
        enumMap.put(Season.SUMMER, "summer");
        enumMap.put(Season.AUTUMN, "autumn");
        enumMap.put(Season.WINTER, "winter");
        System.out.println(enumMap);
    }
}

输出如下:

{SPRING=spring, SUMMER=summer, AUTUMN=autumn, WINTER=winter}

2. EnumMap的常用方法

EnumMap提供了很多常用的方法。下面列出了其中的一些。

2.1 put方法

put方法用于将一个键值对加入到EnumMap中。

public V put(K key, V value);

以下示例使用put方法往EnumMap中添加了一些键值对:

EnumMap<Season, String> enumMap = new EnumMap<Season, String>(Season.class);
enumMap.put(Season.SPRING, "spring");
enumMap.put(Season.SUMMER, "summer");
enumMap.put(Season.AUTUMN, "autumn");
enumMap.put(Season.WINTER, "winter");
System.out.println(enumMap);

输出如下:

{SPRING=spring, SUMMER=summer, AUTUMN=autumn, WINTER=winter}

2.2 remove方法

remove方法用于删除EnumMap中的一个键值对。

public V remove(Object key);

以下示例删除了key为SUMMER的键值对:

EnumMap<Season, String> enumMap = new EnumMap<Season, String>(Season.class);
enumMap.put(Season.SPRING, "spring");
enumMap.put(Season.SUMMER, "summer");
enumMap.put(Season.AUTUMN, "autumn");
enumMap.put(Season.WINTER, "winter");
enumMap.remove(Season.SUMMER);
System.out.println(enumMap);

输出如下:

{SPRING=spring, AUTUMN=autumn, WINTER=winter}

2.3 clear方法

clear方法用于清空EnumMap。

public void clear();

以下示例清空了EnumMap:

EnumMap<Season, String> enumMap = new EnumMap<Season, String>(Season.class);
enumMap.put(Season.SPRING, "spring");
enumMap.put(Season.SUMMER, "summer");
enumMap.put(Season.AUTUMN, "autumn");
enumMap.put(Season.WINTER, "winter");
enumMap.clear();
System.out.println(enumMap);

输出如下:

{}

2.4 containsKey方法

containsKey方法用于判断EnumMap中是否存在某个键。

public boolean containsKey(Object key);

以下示例判断了EnumMap中是否包含key为SPRING的键:

EnumMap<Season, String> enumMap = new EnumMap<Season, String>(Season.class);
enumMap.put(Season.SPRING, "spring");
enumMap.put(Season.SUMMER, "summer");
enumMap.put(Season.AUTUMN, "autumn");
enumMap.put(Season.WINTER, "winter");
boolean containsKey = enumMap.containsKey(Season.SPRING);
System.out.println(containsKey);

输出如下:

true

2.5 containsValue方法

containsValue方法用于判断EnumMap中是否存在某个值。

public boolean containsValue(Object value);

以下示例判断了EnumMap中是否包含值为”summer”的值:

EnumMap<Season, String> enumMap = new EnumMap<Season, String>(Season.class);
enumMap.put(Season.SPRING, "spring");
enumMap.put(Season.SUMMER, "summer");
enumMap.put(Season.AUTUMN, "autumn");
enumMap.put(Season.WINTER, "winter");
boolean containsValue = enumMap.containsValue("summer");
System.out.println(containsValue);

输出如下:

true

2.6 size方法

size方法用于获取EnumMap中键值对的数量。

public int size();

以下示例获取了EnumMap的大小:

EnumMap<Season, String> enumMap = new EnumMap<Season, String>(Season.class);
enumMap.put(Season.SPRING, "spring");
enumMap.put(Season.SUMMER, "summer");
enumMap.put(Season.AUTUMN, "autumn");
enumMap.put(Season.WINTER, "winter");
int size = enumMap.size();
System.out.println(size);

输出如下:

4

3. EnumMap与普通映射类型的比较

EnumMap与普通映射类型在实现上有很大的差别。EnumMap在内部是通过数组实现的,因此具有很高的性能和效率。而普通映射类型在内部一般是通过哈希表实现的,虽然具有较快的查找速度,但是会产生哈希冲突等问题,也会对内存产生一定压力。因此,在处理枚举类型时,EnumMap是更好的选择。

同时,EnumMap与普通映射类型在使用上也有一些区别。由于EnumMap只能接受枚举类型作为键,因此在实际使用时需要注意。另外,在遍历EnumMap时,由于内部是通过数组实现的,因此遍历速度很快。

结论

EnumMap是Java集合框架中的一种特殊映射类型,用于处理枚举类型。它在内部是通过数组实现的,具有很高的性能和效率。与普通映射类型相比,EnumMap在处理枚举类型时更为高效。在实际使用中,需要注意EnumMap只能接受枚举类型作为键。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程