[英]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.