我需要一个 BitSet,它可以轻松连接多个 BitSet,创建一个新的 BitSet。默认实现没有这样的方法。
你们中的任何人都知道在某些外部库中是否有任何实现可以轻松连接?
例如,假设我有一个位数组 11111 和另一个位数组 010101。我想要附加功能。所以在连接之后会产生 11111010101。
好吧,因为没有 leftshift 方法,所以没有办法实现这种非常高效的(性能和内存)。
您可以做的是使用明显nextSetBit
的 for 循环 - 速度慢,但内存效率高。
可能更快的方法是toLongArray
在一个上使用,将正确转移到一个足够大的数组中的副本,从中创建一个位集,或者与另一个一起创建一个位集。这样,您就不会对单个位进行任何位移,而是对单词大小的块进行操作。
这对我有用:
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;
}
结果:11111010101