Pregunta ¿Hay un equivalente en Scala de EnumSet / EnumMap?


En Java tenemos dos clases agradables: EnumSet para conjuntos de enums y EnumMap para un mapa cuyas claves son enums. EnumSet se representa como una palabra de 64 bits (o una matriz de palabras de 64 bits) y EnumMap como una matriz de valores, ambos indexados por los números ordinales de enums. Entonces insert / lookup / remove / ... operaciones toman solo O (1) hora.

¿Tenemos algo así en Scala, mutable o inmutable?

encontré BitSet (tanto mutable como inmutable) que opera en enteros, así que asumí que habría una implementación eficiente de conjuntos de Enumeration.Valuerespaldado por esto. Pero solo encontré Enumeration.ValueSet, cual es respaldado por SortedSet [Int]. Si bien eso no es tan malo, BitSet parece ser bastante más eficiente para este propósito.

No encontré ninguna implementación optimizada de mapas con Enumeration.Value como llaves similares a EnumMap.


11
2017-11-17 17:48


origen


Respuestas:


En realidad, en 2.10 Enumeration.ValueSet usa BitSet.

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

Eso estaría aquí.


5
2017-11-17 21:28