Java BitSet,允许简单地连接BitSet

时间:2012-05-08 09:24:42

标签: java concat bitset

我需要一个BitSet,它允许多个BitSet的轻松连接创建一个新的BitSet。 default implementation没有这样的方法。

在某些外部库中是否有任何一个实现,任何人都知道哪个允许轻松连接?

例如,假设我有一个bitarray 11111和另一个位数组010101.我想要附加功能。因此,连接后会产生11111010101。

2 个答案:

答案 0 :(得分:4)

因为没有leftshift方法,所以没有办法实现这种非常高效的(性能内存)。

你可以做的是使用明显的nextSetBit for循环 - 慢,但内存效率。

可能更快的方法是在一个上使用toLongArray,将正确移位到足够大的数组的副本,从中创建一个bitset,或者用另一个创建一个bitset。这样你就不会对单个位进行任何位移,而是处理单词化的块。

答案 1 :(得分:1)

这对我有用:

BitSet concatenate_vectors(BitSet vector_1_in, BitSet vector_2_in) {
  BitSet vector_1_in_clone = (BitSet)vector_1_in.clone();
  BitSet vector_2_in_clone = (BitSet)vector_2_in.clone();
  int n = 5;//_desired length of the first (leading) vector
  int index = -1;
  while (index < (vector_2_in_clone.length() - 1)) {
    index = vector_2_in_clone.nextSetBit((index + 1));
    vector_1_in_clone.set((index + n));
  }
  return vector_1_in_clone;
}

结果:1​​1111010101