Существует ли Scala эквивалент EnumSet/EnumMap?

В Java у нас есть два классных класса: EnumSet для наборов enum и EnumMap для карты с ключами enum s. EnumSet представляется как 64-битное слово (или массив из 64-разрядных слов) и EnumMap как массив значений, индексированных по порядковым номерам enum s. Поэтому операции insert/lookup/remove/... занимают только время O (1).

Есть ли у нас что-то подобное в Scala - изменяемое или неизменяемое?

Я нашел BitSet (оба изменяемые и неизменяемые), которые работают с целыми числами, поэтому я предположил, что будет эффективная реализация наборов Enumeration. Value подкрепляется им. Но я нашел только Enumeration.ValueSet, который резервную копию SortedSet [Int]. Хотя это не так уж плохо, BitSet представляется для этой цели более эффективным.

Я не нашел оптимизированной реализации карт с Enumeration.Value как клавиши, похожие на EnumMap.

Ответ 1

Собственно, в 2.10 Enumeration.ValueSet использует BitSet.

class ValueSet private[ValueSet] (private[this] var nnIds: immutable.BitSet)

Это будет здесь.