簡體   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