JAVA BitSet设置

时间:2015-07-04 18:51:22

标签: java bitset

我正在使用Java(JDK 1.8)开发并操作BitSets。我来了 一个奇怪的问题。

我实例化一个大小为160的BitSet,如:

    <ListView x:Name="ListV" >
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Vertical">
                <TextBlock Text="{Binding City}"/>
                <TextBlock Text="{Binding Area}"/>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

我想使用size()方法检查大小,该方法给出bitset中的位数。在文档中,据说具有int N作为参数的构造函数正在创建N位的位集。

但是当我在之后用

检查尺寸
BitSet example = new BitSet(160);

我获得了值

example.size()

我不明白为什么,有没有人遇到过这种问题? 链接到文档:http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html

2 个答案:

答案 0 :(得分:5)

这是因为BitSet构造函数创建了一个BitSet“,其初始大小足以明确表示参数给定范围内的位。因此,实际size 至少您在参数中提供的数字,但必然等于该数字。

它特别使用192的原因是192是一个相当不错的二进制数:64 * 3.

答案 1 :(得分:0)

因为BitSet实际上是使用long []来存储0/1。

private void initWords(int nbits) {
    words = new long[wordIndex(nbits-1) + 1];
}