如何获得 Bitset 的实际长度?
How get real length of Bitset?
我在 JavaDoc 上阅读了 BitSet class 的 size() 和 length() 函数,我了解它们背后的逻辑。
但我需要一个函数,它 return 是 BitSet 的实际大小(我插入其中的位数)。例如下面的代码结果为 0 和 64,但我需要一个 return 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
- Returns本BitSet的"logical size":BitSet中最高设置位的索引加一。
size
- Returns 此 BitSet 实际使用的 space 的位数来表示位值。
cardinality
- Returns 在此 BitSet 中设置为真的位数。
如果您需要跟踪设置位数 cardinality
方法就是答案。请注意,它仅跟踪 true
位。
如果您需要跟踪对 set
的任何调用,最简单的解决方案是使用另一个计数器变量。所以你可以创建一个包装器 class 或者扩展 BitSet
(这可能不是最好的解决方案)。无论如何,在这种情况下你必须手工完成。
我的猜测是您认为您可以将 BitSet
视为 List
或您拥有 capacity
的东西(size
在 BitSet
的情况下)并且size
- 列表中元素的实际数量。但是对于 BitSet
只有 true
位有意义。
我在 JavaDoc 上阅读了 BitSet class 的 size() 和 length() 函数,我了解它们背后的逻辑。
但我需要一个函数,它 return 是 BitSet 的实际大小(我插入其中的位数)。例如下面的代码结果为 0 和 64,但我需要一个 return 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
- Returns本BitSet的"logical size":BitSet中最高设置位的索引加一。size
- Returns 此 BitSet 实际使用的 space 的位数来表示位值。cardinality
- Returns 在此 BitSet 中设置为真的位数。
如果您需要跟踪设置位数 cardinality
方法就是答案。请注意,它仅跟踪 true
位。
如果您需要跟踪对 set
的任何调用,最简单的解决方案是使用另一个计数器变量。所以你可以创建一个包装器 class 或者扩展 BitSet
(这可能不是最好的解决方案)。无论如何,在这种情况下你必须手工完成。
我的猜测是您认为您可以将 BitSet
视为 List
或您拥有 capacity
的东西(size
在 BitSet
的情况下)并且size
- 列表中元素的实际数量。但是对于 BitSet
只有 true
位有意义。