繁体   English   中英

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

[英]How to efficiently use Enum objects as keys in the Map data structure?

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

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

API documentation

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

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

用法示例:

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

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

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

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

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

public interface LibraryItem{ ... }

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM