是的,BitSet 只在设置 true 位时才增加大小,而不是 false 位。这是由于 BitSet 的实现方式:它使用一个长整型数组来保存位,其中每一位都对应于该数组的一个元素。在添加 true 位时,BitSet 要确保其数组足够大,以容纳新的 true 位。然而,添加 false 位时并不需要增加数组的大小,因为这些位默认为 false。
以下是一个示例代码,演示了 BitSet 的增长方式:
import java.util.BitSet;
public class BitSetExample {
public static void main(String[] args) {
BitSet bitSet = new BitSet(10);
System.out.println("Initial size of BitSet: " + bitSet.size()); // Prints 64
bitSet.set(0, true); // Add a true bit at position 0
System.out.println("Size after adding a true bit: " + bitSet.size()); // Prints 64
bitSet.set(20, true); // Add a true bit at position 20
System.out.println("Size after adding another true bit: " + bitSet.size()); // Prints 128
bitSet.set(15, false); // Add a false bit at position 15
System.out.println("Size after adding a false bit: " + bitSet.size()); // Prints 128
}
}
在上面的示例中,BitSet 开始只有 10 个位。然后,添加了一个 true 位,这不会改变 BitSet 的大小。接下来,添加了一个 true 位,这会导致 BitSet 扩展为 128 个位。最后,添加了一个 false 位,这不会改变 BitSet 的大小。
上一篇:BitSet有时会丢失位
下一篇:Bitset作为构造函数参数