在Java中,我們有兩個很好的類:EnumSet
爲套enum
S和EnumMap
一個映射,其關鍵字是enum
秒。 EnumSet
被表示爲64位字(或64位字的陣列)和EnumMap
作爲值的陣列,既可通過enum
S上的序數索引。因此,插入/查找/刪除/ ...操作只需要O(1)時間。有沒有與EnumSet/EnumMap等價的Scala?
我們有在Scala中類似的東西 - 可變或不變?
我發現BitSet(都是可變的和不可變的),它使用整數運算,所以我假設將會有一組Enumeration
的高效實現。 Value
由它備份。但我發現只有Enumeration.ValueSet
,這是backed up by SortedSet[Int]。儘管這並沒有那麼糟糕,但BitSet
似乎對此更有效。
我沒有找到任何Enumeration.Value
優化的實施地圖類似於EnumMap
鍵。
與Java'enum's,Scala的'Enumeration'值可以有任意的數字標識符,這就是爲什麼我懷疑有沒有直接等同於Java的'EnumSet'和'EnumMap'在斯卡拉。 – ghik
@ghik雖然這是真的,我會說這個功能很少使用。當有人將大數字分配給值時,僅僅使用不同的「Set」/「Map」實現是他的責任。 –
@ghik事實上,這是2.10 impl中錯誤的來源。 –