调整java BitSet的大小

我对BitSet类进行了分类,以添加一些其他方法.其中一个被称为“折叠”.
它将BitSet分成两半并将它们与一个或“组合”.
(增加信息密度)

这可以工作,但折叠的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的大小? (一个“技巧”,我没有看到?)

解决方法:

我认为做myClass = myClass.fold()是可以的,你不必担心“节省空间”.

如果对旧对象没有兴趣(即,没有人对它有引用),垃圾收集器无论如何都会为你清理内存.它针对这类用例进行了优化.

这种模式可以在java库中的所有不可变类中找到.以str = str.substring(i)为例;或bigInt = bigInt.multiply(BigInteger.TEN);等等

上一篇:[luogu3674]小清新人渣的本愿


下一篇:boost库常用库介绍