Scala BitSet的长值?

时间:2017-06-30 19:32:54

标签: scala bitset

我有一个大型数据集,而rowId是Long类型。 它需要指出一行是否在某个特殊集合中。

我发现BitSet对内存和网络传输更有效,但不幸的是BitSet可以容纳的最大值是Int。

还有其他方法吗? (使用boolean []?)

由于

1 个答案:

答案 0 :(得分:2)

BitSet的性质使它们可以轻松地分解和合并,以便根据您要完全实现的目标轻松实现网络传输。

你可以随时建立自己的:

object BitSet extends BitSetFactory[BitSet] {
  val empty: BitSet = immutable.BitSet.empty
  def newBuilder = immutable.BitSet.newBuilder

  implicit def canBuildFrom: CanBuildFrom[BitSet, Long, BitSet] = bitsetCanBuildFrom
}

trait BitSetFactory[Coll <: BitSet with BitSetLike[Coll]] {
  def empty: Coll
  def newBuilder: Builder[Long, Coll]
  def apply(elems: Long*): Coll = (empty /: elems) (_ + _)
  def bitsetCanBuildFrom = new CanBuildFrom[Coll, Long, Coll] {
    def apply(from: Coll) = newBuilder
    def apply() = newBuilder
  }
}

trait BitSetLike[+This <: BitSetLike[This] with SortedSet[Long]] extends SortedSetLike[Long, This] { self =>

等...