我需要一个BitSet,它允许多个BitSet的轻松连接创建一个新的BitSet。 default implementation没有这样的方法。
在某些外部库中是否有任何一个实现,任何人都知道哪个允许轻松连接?
例如,假设我有一个bitarray 11111和另一个位数组010101.我想要附加功能。因此,连接后会产生11111010101。
答案 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;
}
结果:11111010101