繁体   English   中英

相当于BitSet的list.size()是什么?

[英]Whats the list.size() equivalent of the BitSet?

我的问题将通过下面的代码更好地理解。 我需要知道我最后的设定。 如何在位集中找到它?

public class FreeMain {

    FreeMain ( ) {  }

    public static void takeBitSet(BitSet bitSet) {
        // I intend to read 30 positions from bit set since the for loop looped from 0 to 29.
        // Just like list.size() would have given me number of elements added to it
        // whats the "list.size()" equivalent for bitset ? 
    }

    public static void main(String[] args) throws IOException {
        BitSet bs = new BitSet();
        System.out.println(bs.length());

        for (int i = 0; i < 30; i++) {
            bs.set(i);
            System.out.print(bs.get(i));
        }

        takeBitSet(bs);
    }  
}

cardinality() ,它返回设置的位数。

还有length() ,它返回1 +最高位集的索引。

还有size() ,以位为单位返回集合的容量。

在这三个length() - 1是最接近“您设置的最后一位”的东西,但是请注意,它是最高设置位的索引,而不是最近设置位的索引(使用仅BitSet )。

您还提到了“添加到其中的元素数”,其中cardinality()是最接近的匹配项(只要您不考虑将bit设置为0在语义上等同于“向set中添加0”)。

我不太确定答案是什么(Jason C's很好)。 我进行了一个小小的测试来了解它(Java 7,64位系统):

import java.util.BitSet;

public class BitSetTest {
    public static void main(String[] args) {
        BitSet bset = new BitSet();

        for (int i = 0; i < 65; i++) {
            bset.set(i);
        }

        bset.set(78);

        System.out.println("Cardinality = " + bset.cardinality());
        System.out.println("Size = " + bset.size());
        System.out.println("Length = " + bset.length());
    }
}

输出:

Cardinality = 66
Size = 128
Length = 79

在此设置中,您可以采用大小来表示集合可用的位数。 (当您超过初始大小时会增加)。 基数是到目前为止已设置的元素的实际数量。 长度是设置的最高位,您可以看到是79,并且之间的位可能已设置也可能未设置(取决于之前使用该设置的方式)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM