繁体   English   中英

如何获得Bitset的真实长度?

[英]How get real length of Bitset?

我了解了JavaDoc上BitSet类的size()和length()函数,并且了解它们背​​后的逻辑。

但是我需要一个函数,该函数返回BitSet的实际大小 (我插入其中的位数)。 例如下面的代码导致0和64,但是我需要一个返回5的函数。

BitSet test = new BitSet(10);
for (int i = 0; i < 5; i++) {
    test.set(i, false);
}
System.out.println("len = " + test.length());
System.out.println("size = " + test.size());

BitSet具有3种描述其状态的方法(从长度和设置位的角度)。

  1. length返回此BitSet的“逻辑大小”:BitSet中最高设置位的索引加1。
  2. size返回此BitSet实际使用的表示位值的空间位数。
  3. cardinality -返回在此BitSet中设置为true的位数。

如果需要跟踪设置位数的cardinality方法就是答案。 请注意,它跟踪true位。

如果需要跟踪set的任何调用,最简单的解决方案是拥有另一个计数器变量。 因此,您可以创建包装器类,也可以扩展BitSet (这可能不是最佳解决方案)。 无论如何,在这种情况下,您必须手动操作。

我的猜测是,你以为你可以把BitSetList或者你有什么capacitysizeBitSet的情况下)和size -列表中元素的实际数量。 但是对于BitSet只有true位才有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM