是否存在与EnumSet / EnumMap相当的Scala?

时间:2012-11-17 17:48:28

标签: scala enums set scala-collections

在Java中,我们有两个不错的类:EnumSet用于enum的集合EnumMapenum用于密钥为EnumSet s的映射。 EnumMap表示为64位字(或64位字的数组),enum表示为值数组,均由Value s的序数索引。因此,insert / lookup / remove / ...操作只需 O(1)时间。

我们在Scala中有类似的东西 - 可变还是不可变?

我发现BitSet(都是可变的和不可变的)对整数进行操作,所以我假设有一个Enumeration的集合的有效实现。Enumeration.ValueSet由它支持。但我发现只有BitSet,即backed up by SortedSet[Int]。虽然情况并非如此糟糕,但Enumeration.Value似乎更有效率。

我没有找到任何使用EnumMap的地图的优化实施作为与{{1}}类似的键。

1 个答案:

答案 0 :(得分:5)

实际上,在2.10中Enumeration.ValueSet使用BitSet。

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

That would be here.