有没有一种方法可以在Java中的BitSet中打开位数?

bra*_*orm 0 java variable-length bitset

我希望在a中打开位数BitSet.这是一个计算偶数的程序.当然,有更简单的方法来计算偶数,这只是为了理解如何使用BitSets.这是代码:

Public class Test {

public static void main(String[] args) {


        BitSet b = new BitSet();
        for (int i=0; i<10;i++){
            b.set(i);
        }
        System.out.println(b);
        System.out.println("even numbers ");
        int i =0;
        while(i<10){
            if (i%2!=0){
                b.clear(i);
            }
            i++;
        }
        System.out.println(b);
        System.out.println(b.length());
    }
}

output:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
even numbers 
{0, 2, 4, 6, 8}
9
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以打开比特数,例如,在上面的例子中它应该是5.我总是可以遍历BitSet并检查是否(b.set(i))会这样o(n).有没有更快的方法来获得开启位数?

谢谢

dna*_*ult 6

BitSet.cardinality()

返回此BitSet中设置为true的位数.

http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html#cardinality()