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

时间:2010-06-12 19:28:54

标签: java map enums

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

3 个答案:

答案 0 :(得分:18)

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

来自API documentation

  

<强> Class EnumMap<K extends Enum<K>,V>

     
    

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

  

使用示例:

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

public interface LibraryItem{ ... }

public enum LibraryItemType{ BOOK, CD, VHS, AUDIO; ... }

Map<LibraryItemType, NavigableSet<LibraryItem>> itemsByType =
    new EnumMap<>(LibraryItemType.class);