我对 BitSet 类进行了子分类以添加一些额外的方法。其中之一称为“折叠”。它将 BitSet 分成两半,并用 or 将它们“组合”起来。(增加信息密度)
这可行,但折叠的 BitSet 的大小(1024)仍然是原始大小。
代码:
BitSet firstHalf;
BitSet secondHalf;
for(int i = nrOfTimes; i > 0; i-- ){
firstHalf = this.get(0, this.size()/2);
secondHalf = this.get(this.size()/2, this.size());
firstHalf.or(secondHalf);
this.clear();
this.or(firstHalf);
}
返回一个所需长度的新 BitSet 可能是可行的,但只能通过为每次迭代创建一个新的较小的 BitSet,但您仍然需要重新分配它(myClass = myClass.fold())。如果你弃牌,对原始版本没有兴趣。这个想法是为了节省空间(内存和数据库)。
有没有办法减小当前 BitSet 的大小?(我没看到的“技巧”?)