【发布时间】:2012-11-06 03:41:50
【问题描述】:
在 Java 中,我们有两个不错的类:EnumSet 用于 enums 的集合,EnumMap 用于其键为 enums 的映射。 EnumSet 表示为一个 64 位字(或 64 位字数组),EnumMap 表示为一个值数组,两者都由enums 的序数索引。所以插入/查找/删除/...操作只需要 O(1) 时间。
我们在 Scala 中是否有类似的东西 - 可变或不可变?
我发现BitSet(可变和不可变)对整数进行操作,所以我假设有一组Enumeration.Values 支持它的有效实现。但是我只找到了Enumeration.ValueSet,也就是backed up by SortedSet[Int]。虽然这还不错,但BitSet 似乎更有效地实现了这一目的。
我没有找到任何使用Enumeration.Value 作为类似于EnumMap 的键的地图优化实现。
【问题讨论】:
-
与 Java
enums 不同,Scala 的Enumeration值可以具有任意数字标识符,这就是为什么我怀疑 Scala 中的 JavaEnumSet和EnumMap没有直接等效项。跨度> -
@ghik 虽然这是真的,但我想说这个功能很少使用。当有人为值分配大数字时,他有责任简单地使用不同的
Set/Map实现。 -
@ghik 实际上这是 2.10 impl 中的错误来源。
标签: scala enums set scala-collections