0

でオンになっているビットの数を取得したい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

オンになっているビット数を取得する方法はありますか。たとえば、上記の例では 5 である必要があります。いつでも をループしてBitSet、 かどうかを確認でき(b.set(i))ますo(n)。オンになっているビットの数を取得するより速い方法はありますか?

ありがとう

4

1 に答える 1

6

BitSet.カーディナリティ()

この BitSet で true に設定されたビット数を返します。

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

于 2013-11-08T19:42:42.633 に答える