[英]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种描述其状态的方法(从长度和设置位的角度)。
length
返回此BitSet的“逻辑大小”:BitSet中最高设置位的索引加1。 size
返回此BitSet实际使用的表示位值的空间位数。 cardinality
-返回在此BitSet中设置为true的位数。 如果需要跟踪设置位数的cardinality
方法就是答案。 请注意,它仅跟踪true
位。
如果需要跟踪set
的任何调用,最简单的解决方案是拥有另一个计数器变量。 因此,您可以创建包装器类,也可以扩展BitSet
(这可能不是最佳解决方案)。 无论如何,在这种情况下,您必须手动操作。
我的猜测是,你以为你可以把BitSet
的List
或者你有什么capacity
( size
以BitSet
的情况下)和size
-列表中元素的实际数量。 但是对于BitSet
只有true
位才有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.