和枚举类相关的Map类——EnumMap

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枚举值的自然顺序排序。

猜你喜欢

转载自cakin24.iteye.com/blog/2324490