Question Existe-t-il un équivalent Scala de EnumSet / EnumMap?


En Java, nous avons deux belles classes: EnumSet pour des ensembles de enumle sable EnumMap pour une carte dont les clés sont enums. EnumSet est représenté par un mot de 64 bits (ou un tableau de mots de 64 bits) et EnumMap comme un tableau de valeurs, toutes deux indexées par les nombres ordinaux de enums. Donc, les opérations d'insertion / recherche / suppression / ... ne prennent que O (1) temps.

Avons-nous quelque chose comme ça dans Scala - mutable ou immuable?

j'ai trouvé BitSet (à la fois mutable et immuable) qui opère sur des nombres entiers, donc j'ai supposé qu'il y aurait une implémentation efficace des ensembles de Enumeration.Values soutenu par elle. Mais j'ai trouvé seulement Enumeration.ValueSet, lequel est sauvegardé par SortedSet [Int]. Bien que ce ne soit pas si grave, BitSet semble être plus efficace à cet effet.

Je n'ai pas trouvé d'implémentation optimisée de cartes avec Enumeration.Value comme des clés similaires à EnumMap.


11
2017-11-17 17:48


origine


Réponses:


En fait, en 2.10, Enumeration.ValueSet utilise BitSet.

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

Ce serait ici.


5
2017-11-17 21:28