【问题标题】:is there a method to get the number of bits turned on in the BitSet in Java? [duplicate]有没有一种方法可以在 Java 中的 BitSet 中获得打开的位数? [复制]
【发布时间】:2013-11-08 19:40:54
【问题描述】:

我想获取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)。 有什么更快的方法来计算打开的位数?

谢谢

【问题讨论】:

    标签: java bitset variable-length


    【解决方案1】:

    BitSet.cardinality()

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

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

    【讨论】:

    • 我在查看 Bitset 的 API 时怎么会错过这个?我的坏
    • @user 确保您没有错过将其标记为已回答 :)
    猜你喜欢
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 2011-01-03
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    相关资源
    最近更新 更多