java - 调整 java BitSet 的大小

标签 java resize 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); 等为例

关于java - 调整 java BitSet 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3922120/

相关文章:

java - 从 Java 8 中的 Function 继承的命名具体接口(interface)

javascript - 如何优化窗口调整大小和初始化时的图像自动调整

java - 正确使用 BitSet 来替换基于 int 的标志。是否可以?

c++ - 将 uint8_t 的 vector 转换为位集

c++ - 如何划分位集?

java - 在 Java 中测试自定义锁

java - 多人 2D 游戏中的数据结构 (Java)

java - 如何安全地将用户 GUI 输入数据传递给 SwingWorker 并使用该数据?

java - 窗口内容大小不受 Window min -height -width 影响

html - 除非存在另一个 div,否则使 div 占据页面的 100%