如何有效地使用Enum对象作为Map数据结构中的键?

是否有更高效和专业的Map集合实现,其中Enum对象可以作为键?

是。 EnumMap就是这样; 一个有效的Map接口实现,其中键类型必须是枚举:

API documentation

Class EnumMap,V>

用于枚举类型键的专用Map实现。 枚举映射中的所有键必须来自创建映射时显式或隐式指定的单个枚举类型。 枚举映射在内部表示为数组。 这种表现非常紧凑和高效。

用法示例:

 Map map = new EnumMap(MyEnum.class); 

顺便说一句,写起来更简单:

 Map map = new EnumMap<>(MyEnum.class); 

没有必要重复这些类型。 这可以使代码更容易阅读。

在我偶然发现Java API中的答案后,我最近才了解到这一点。 如果您有一个使用枚举作为键的地图,请确保使用EnumMap 。 它非常简单,效率更高:

 public interface LibraryItem{ ... } public enum LibraryItemType{ BOOK, CD, VHS, AUDIO; ... } Map> itemsByType = new EnumMap<>(LibraryItemType.class);