EnumMapのドキュメントを見る:
Map
列挙型キーで使用するための特殊な実装。列挙型マップ内のすべてのキーは、マップの作成時に明示的または暗黙的に指定された単一の列挙型から取得する必要があります。列挙型マップは、内部的に配列として表されます。この表現は非常にコンパクトで効率的です。
列挙型マップは、キーの自然な順序 (列挙型定数が宣言されている順序) で維持されます。keySet()
これは、コレクション ビュー ( 、entrySet()
、および)によって返される反復子に反映されますvalues()
。
つまり、 anEnumMap
は、マップの値の型の単なる配列です。言い換えれば、 ,EnumMap<SomeEnum, SomeValue>
は単なるSomeValue[]
.
インデックスはどのように割り当てられているのでしょうか? それらは、列挙型の自然順序によって割り当てられます。例:
enum Day {
MON, TUE, WED, THU, FRI, SAT, SUN
}
上記の列挙型には、次の自然順序があります。
MON TUE WED THU FRI SAT SUN
0 1 2 3 4 5 6
したがって、次のような操作map.put(Day.FRI, "Yay!")
は実際には次のように表示できます。
array[4] = "Yay!";
配列アクセスは一定時間の操作であり、それがEnumMap
利点でもあります。ルックアップ ( get()
) も同じように機能します。